<프로그래머스 문제풀이>
해답)
def solution(prices):
time = 0
stk = [(0,prices[0])]
res = [0] * len(prices)
print(stk[0])
for i, v in enumerate(prices[1:]):
# 들어오려는 숫자가 더 작은 경우
while len(stk) > 0 and v < stk[len(stk)-1][1]:
for (s_i, s_v) in stk:
res[s_i] += 1 # 스택 안에있던 요소들 시간 증가
stk.pop()
stk.append((i+1,v))
while stk: # 남아있는 것들 시간 넣어주기
(i,v) = stk.pop()
res[i] += time
time += 1
return res
1. 스택을 반드시 이용하겠다는 마인드로 풀었습니다.
2. 주식 가격을 하나씩 받습니다.
2-1. 주식 가격이 올랐을 경우 그냥 스택에 집어넣습니다.
2-2. 주식 값이 떨어진 경우 떨어진 주식보다 높은 모든 주식을 스택을 빼냅니다. (빼는 동안 남아있는 스택들에는 시간이 1초씩 흘러갑니다.)
3. 최종적으로 남아있는 스택을 1개씩 빼주며 시간을 1초씩 계산해줍니다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
728x90
'문제풀이 > Programmers' 카테고리의 다른 글
[프로그래머스💯] 코딩테스트 연습 > 깊이/너비 우선 탐색(DFS/BFS) > 네트워크 > 다른 사람의 풀이 (0) | 2020.01.16 |
---|---|
[프로그래머스💯] 코딩테스트 연습 > 탐욕법(Greedy) > 구명보트 (0) | 2020.01.12 |
[프로그래머스💯] 코딩테스트 연습 > 스택/큐 > 탐욕법 (0) | 2019.12.29 |
[프로그래머스💯] 코딩테스트 연습 > 탐욕법(Greedy) > 체육복 (2) | 2019.11.25 |
[프로그래머스💯] 코딩테스트 연습 > 탐욕법(Greedy) > 조이스틱 (1) | 2019.11.24 |
댓글