24. 예산 ★ (그리디;;)
2024. 7. 12. 21:43
프로그래머스/Lv. 1
유형 : 그리디....나는 그리디가 싫다.,........ 1. recursion def solution(d, budget): answer = buy(d, budget, 0) return answerdef buy(d, n, finish): if n == 0 or not d: return finish res = [] for i in range(len(d)): if d[i] > n: return finish new = d.copy() curr = new.pop(i) res.append(buy(new, n-curr, finish + 1)) return max(res) 결과 : 시간 초과 recur..
23. 행렬의 덧셈 ★ (numpy library의 사용)
2024. 7. 12. 20:41
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 5분 -> tolist 서치 import numpy as npdef solution(arr1, arr2): answer = np.array(arr1) + np.array(arr2) return answer.tolist() numpy array와 list 간의 변환 메서드- list -> array : np,array()- array -> list : array이름.tolist()
22. 문자열 다루기 기본
2024. 7. 12. 20:33
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 5분def solution(s): if len(s) != 4 and len(s) != 6: return False answer = True numlist = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] slist = list(s) for ch in slist: if ch not in numlist: answer = False return answer return answer 길이가 4 또는 6인지도 체크해야 하는데, 조건을 제대로 안 봤다.주어진 조건 잘 체크하기
21. x만큼 간격이 있는 n개의 숫자 (리스트 컴프리헨션)
2024. 7. 12. 18:34
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 5분 def solution(x, n): answer = [] cnt = 0 curr = x while cnt 최종 정답 코드처음에는 for문을 사용했는데 왠지 tc 10에서 오류가 나서 while문으로 방향을 바꾸었다. def number_generator(x, n): # 함수를 완성하세요 return [i * x + x for i in range(n)]print(number_generator(2, 5)) 리스트 컴프리헨션을 사용하는 아주아주 쉬운 풀이가 있었다.. 응용하여 더 간단한 코드를 작성해 보았다, def solution(x, n): answer = [x*i for i in range(1, n+1)] return ans..
20. 정수 제곱근 판별
2024. 7. 12. 18:22
프로그래머스/Lv. 1
유형 : 구현 풀이 시간 : 10분 이내 def solution(n): answer = 0 x = 1 while True: answer = x**2 if answer == n: answer = (x+1)**2 break if answer > n: answer = -1 break x += 1 return answer 종료 조건은 2가지 : answer이 n보다 커질 때, 그리고 answer이 n과 같을 때.answer이 더 커지는 경우 제곱수가 아니므로 answer = -1로 설정하고 breakanswer와 같을 경우, (n+1)**2 반환
19. 문자열 내 p와 y의 개수
2024. 7. 12. 18:09
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 3분 def solution(s): answer = True slist = list(s.lower()) pcount = 0 ycount = 0 for ch in slist: if ch == 'p': pcount += 1 elif ch == 'y': ycount += 1 if pcount != ycount: answer = False return answer
18. 두 정수 사이의 합
2024. 7. 12. 18:09
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 5분 def solution(a, b): answer = 0 step = 1 if a > b: step = -1 for i in range(a, b+step, step): answer += i return answer a, b의 대소관계가 정해져 있지 않다는 점이 포인트인 문제였다. 전에 에서 이것을 고려하지 않아서 한참 헤맸던 기억이 나서, 이번에는 쉽게 해결했다. a > b 라면, step을 -1로 설정하여 쉽게 해결하였다.
17. 덧칠하기 ★
2024. 7. 12. 17:44
프로그래머스/Lv. 1
유형 : 그리디? 구현?풀이 시간 : 25-30분, 스스로 해결 1. 기본 구현def solution(n, m, section): answer = 0 for i in range(1, n+1): if i in section: answer += 1 for j in range(i, i+m): if j in section and j 일단 위 풀이에서는 시간 초과가 났다. (50/100)시간 초과를 해결하기 위해서.. 코드를 수정해 보자. 2. dictionary를 사용해봤는데 이 문제는 이렇게 푸는 게 아닌 것 같다.def solution(n, m, section): answer = 0 section_dic..