264. Ugly Number II
1) Original Idea 1부터 하나씩 ugly number인지 확인 후, n번째 ugly number를 return 한다. : 시간이 너무 많이 걸림 & 중복연산이 너무 많음 -> 시간 초과 2) ugly number list를 저장해두고, 2, 3, 혹은 5로 나눠지는 경우(나머지가 0), 나눠진 몫이 ugly number 리스트에 있으면, 해당 number를 ugly number 리스트에 새로 추가해준다. 아니면 pass : 해야하는 나머지 연산, 나누기 연산이 너무 많음 -> 시간 초과 3) num을 1부터 확인하지 않고, sorted map을 이용해서, map 안에 있는 것 중 ct 번째로 큰 숫자를 가져온다. 그 숫자에 2, 3, 5를 곱한 결과를 map에 넣는다. 이를 n번 반복한다. ..
더보기
121. Best Time to Buy and Sell Stock
1) Original : 기본 아이디어는 아래의 코드에서부터 시작된다. (이 코드를 돌리면 시간 초과가 뜬다) 1, 2, 3, 4 가 있다면, 1 vs max(2,3,4) = 4 - 1 2 vs max(3,4) = 4 - 2 3 vs max(4) = 4 - 3 결과 값들의 max를 MaxProfit으로 반환한다. 하지만 이 코드는 max를 구하는 과정(j loop)에서 겹치는 연산을 불필요하게 반복한다는 것을 볼 수 있다. 2) Optimization 1 : Max를 maxlist에 넣고, 새로운 원소가 추가될 때, maxlist[i+1] = max(maxlist[i] , prices[i+1]) 을 해준다. 여기서 max연산을 역순으로 해주어야해서, 실제로는 maxlist[i] = max(maxlist[..
더보기