2방법 ①: 가능한 모든 경우를 비교하기
일단 생각할 수 있는 가장 간단한 방법은 주식을 살 수 있는 모든 날과 팔 수 있는 모든 날의 주가를 비교해서 가장 큰 수익을 찾는 것입니다.
예를 들어 첫째 날 10,300원에 주식을 샀다면 둘째 날부터의 주식 가격인 9,600원, 9,800원 … 9,500원 중 하나로 주식을 팔 기회가 생깁니다. 마찬가지로 둘째 날 9,600원에 주식을 샀다면 셋째 날부터의 주식 가격인 9,800원, 8,200원 … 9,500원 중 하나로 주식을 팔 기회가 생깁니다.
이런 식으로 모든 경우를 비교해서 가장 큰 이익을 내는 경우를 찾으면 원하는 최대 수익을 계산할 수 있습니다. 기억력이 좋은 사람이라면 문제 3 동명이인 찾기에서 가능한 모든 사람을 비교하던 방식과 똑같다는 것을 눈치챘을 것입니다.
프로그램 3-1의 다음 부분이 기억나나요?
# 리스트 안에 있는 n개 자료를 빠짐없이 한 번씩 비교하는 방법
for i in range(0, n - 1):
for j in range(i + 1, n):
# i와 j로 필요한 비교
이 경우 비교 횟수는 번이고 계산 복잡도는 O(n2)이었습니다.