2021-11-20 주식 최대 수익 구하기
·
알고리즘/문제 풀이
1. BruteForce def max_profit(stock_list): max_profit_so_far = stock_list[1] - stock_list[0] for i in range(len(stock_list)): for j in range(i+1,len(stock_list)): max_profit_so_far = max(max_profit_so_far, stock_list[j] - stock_list[i]) return max_profit_so_far하나하나 보면서 모든 경우를 살펴보면 된다. O(n^2) 2. So_Far def max_profit(stock_list): max_profit_so_far = stock_list[1] ..
2021-11-20 투자구간에서 최대수익
·
알고리즘/문제 풀이
1. Brute Force기본 값으로 가장 첫 날의 수익을 지정 수익은 지금까지의 구한 수익 + 당일 수익 으로 구할 수 있다. def sublist_max(profits): profit = [profits[0]] for i in range(1, len(profits)): profit.append(profit[i-1] + profits[i]) return max(profit) 2. Divide and Conquer basecase는 start == end 수익율이 최대인 구간은 리스트 중앙을 기준으로 왼쪽에 있거나 오른쪽에 있거나 중앙을 관통할 수 있다.리스트를 좌 우 로 나누는 것은 재귀로 해결 중앙을 관통하는 구간의 최대값을 알기 위해서는 따로 함수의 분리 필요 -..
2021-10-09 가장 가까운 거리 구하기 반영환
·
알고리즘/문제 풀이
튜플 두개를 넘기면 거리 계산을 해주는 함수를 distance로 정의해서 참조하자.일단 거리를 계산해서 최소거리를 구하는 것은 어렵지 않다.그런데 그 최소거리가 누구의 것인지 알려면, 반드시 key-value 쌍의 데이터 구조여야 한다.따라서 dict 구조를 사용했다. from math import sqrtdef distance(store1, store2): return sqrt((store1[0] - store2[0]) ** 2 + (store1[1] - store2[1]) ** 2)def closest_pair(coordinates): container = {} def find_value(x): return container[x] for i in range(len(c..