투자귀재규식이III.py def sublist_max(profits): max_profit_so_far = profits[0] # 반복문에서 현재까지의 부분 문제의 답 max_check = profits[0] # 가장 끝 요소를 포함하는 구간의 최대 합 # 반복문을 통하여 각 요소까지의 최대 수익을 저장한다 for i in range(1, len(profits)): # 새로운 요소를 포함하는 구간의 최대합을 비교를 통해 정한다 max_check = max(max_check + profits[i], profits[i]) # 최대 구간 합을 비교를 통해 정한다 max_profit_so_far = max(max_profit_so_far, max_check) return max_profit_so_far # 테스..
투자귀재규식이II.py def sublist_max(profits, start, end): # 여기에 코드를 작성하세요 # base case: 범위에 하나의 항목밖에 없으면, 그 항목 리턴 if start == end: return profits[start] # 중간 인덱스 mid = (start + end) // 2 # 상황별로 최대 수익을 구한다 max_left = sublist_max(profits, start, mid) max_right = sublist_max(profits, mid + 1, end) max_cross = max_crossing_sum(profits, start, end) # 위 세 경우 중 가장 큰 결괏값을 리턴한다 return max(max_left, max_right, ma..
중복되는항목찾기I.py def find_same_number(some_list): # 여기에 코드를 작성하세요 seen_element = [] for i in range(len(some_list)): seen_element.append(some_list[i]) if some_list[i+1] in seen_element: return some_list[i+1] # 중복되는 수 ‘하나’만 리턴합니다. print(find_same_number([1, 4, 3, 5, 3, 2])) print(find_same_number([4, 1, 5, 2, 3, 5])) print(find_same_number([5, 2, 3, 4, 1, 6, 7, 8, 9, 3])) 해결과정 먼저 Brute Force 를 이용해 모든 ..
빠르게산오르기.pydef select_stops(water_stops, capacity): # 여기에 코드를 작성하세요 answer = [] # 마지막으로 들른 약수터 위치 last_stop = 0 for i in range(len(water_stops)): # i 지점까지 갈 수 없으면, i - 1의 지점 약수터를 들른다. # (water_stops[i] - last_stop capacity: answer.append(water_stops[i - 1]) last_stop = water_stops[i - 1] # 마지막 약수터는 무조건 간다 answer.append(water_stops[-1]) return answer # 테스트 코드 list1 = [1, 4, 5, 7, 11, 12, 13, 16, 1..
거듭제곱빠르게계산하기.py def power(x, y): # 여기에 코드를 작성하세요 # Base case if y == 0: return 1 # 계산을 한 번만 하기 위해 변수에 저장 subresult = power(x, y // 2) # Recursive Case # 문제를 문제 두 개로 나눠준다.(짝수인 경우, 홀수인 경우) # y가 무조건 한번은 홀수가 된다. if y % 2 == 0: return subresult * subresult else: return x * subresult * subresult # 테스트 코드 print(power(3, 5)) print(power(5, 6)) print(power(7, 9)) 해결과정 문제에서 소개된 반복문 솔루션을 그대로 재귀적으로 바꿔 보았지만, ..
def sublist_max(profits): # 여기에 코드를 작성하세요 sub_list = [] sum = 0 for i in range(len(profits)): sum = 0 for j in range(i+1): sum += profits[j] sub_list.append(sum) return max(sub_list) # 테스트 코드 print(sublist_max([4, 3, 8, -2, -5, -3, -5, -3])) print(sublist_max([2, 3, 1, -1, -2, 5, -1, -1])) print(sublist_max([7, -3, 14, -8, -5, 6, 8, -5, -4, 10, -1, 8]))해결과정 Brute Force알고리즘을 이용해 문제 해결 Brute Force..