사용 언어 - Python3
문제 - 주식가격
정답
for문 반복문 or 스택/큐 문제 (정답 맞춘 여부 X)
정답1 풀이 - 이중 반복문
1. answer = 0벡터
2. i = [0,1,2,3,4] / j = [1,2,3,4]
하나씩 값 비교하면서 answer[i] +=1
def solution(prices):
answer = [0]*len(prices)
for i in range(len(prices)):
for j in range(i+1,len(prices)):
if prices[i] <= prices[j]:
answer[i] += 1
else:
answer[i] += 1
break
return answer
정답2 풀이 - 스택/큐
1. prices의 인덱스와 가격을 enumerate로 같이 출력한다.
2. stack에 i append한다. stack의 마지막 원소보다 price 값이 작으면 stack을 pop한다.
인덱스 i에서 stack의 마지막 값 j를 뺀 값을 answer[j]에 추가해준다.
3. stack이 없을 때까지, stack.pop() 한다. answer[j] = len(pricies)-1-j
def solution(prices):
answer = [0]*len(prices)
stack = []
for i, price in enumerate(prices):
while stack and price < prices[stack[-1]]:
j = stack.pop()
answer[j] = i - j
stack.append(i)
while stack:
j = stack.pop()
answer[j] = len(prices) - 1 - j
return answer
레퍼런스
- 정답 깃허브
- 정답 참고
'Algorithm > 스택&큐&덱&힙' 카테고리의 다른 글
[프로그래머스 lv1] 덧칠하기 (0) | 2023.04.24 |
---|---|
[Python3] 백준 1544번 사이클 단어 (0) | 2023.04.19 |
[프로그래머스 lv 2] 다리를 지나는 트럭 (1) | 2023.01.26 |
[프로그래머스 lv 2] 프린터 (0) | 2023.01.26 |
[프로그래머스 lv 2] 올바른 괄호 (0) | 2023.01.25 |
댓글