-
100일 동안 매일 알고리즘을 하면? - 11일차알고리즘 2022. 1. 10. 15:00
https://programmers.co.kr/learn/courses/30/lessons/42584
코딩테스트 연습 - 주식가격
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00
programmers.co.kr
수학으로 풀었다.
약간 수학적 귀납법, DP 느낌으로 푼것같은데 이게 직관적인 풀이는 아닌것같긴하다. 다른 사람들의 코드를 보니깐 다 고만고만한데, 다들 시간복잡도 O(N^2) 으로 풀었다. 내 코드 또한 O(N^2) 이긴한데 break 문 덕분에 시간초과가 안난듯하다.
def solution(prices): ret = [0] * len(prices); for i in range(len(prices) - 1): if prices[i] <= prices[i + 1]: continue; elif prices[i] > prices[i + 1]: ret[i] = 1; if (i > 1): for j in range(i - 1, -1, -1): if prices[j] > prices[i + 1]: if ret[j] == 0: ret[j] = (i + 1 - j); continue; else: break; for i,v in enumerate(ret): if v == 0: ret[i] = len(ret) - 1 - i; return ret
'알고리즘' 카테고리의 다른 글
100일 동안 매일 알고리즘을 하면? - 13일차 (0) 2022.01.19 100일 동안 매일 알고리즘을 하면? - 12일차 (0) 2022.01.11 100일 동안 매일 알고리즘을 하면? - 10일차 (0) 2022.01.09 [프로그래머스] 디스크 컨트롤러 (0) 2022.01.08 100일 동안 매일 알고리즘을 하면? - 8일차 (0) 2022.01.07