Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 소수찾기
- 기능개발
- heap
- react
- 더 맵게
- 다리를 지나는 트럭
- 주식
- Brute Force
- Data Structure
- 완주하지 못한 선수
- 디스크 컨트롤러
- 전화번호 목록
- browser workflow
- 타겟 넘버
- react-native
- 가장 큰 수
- Virtual DOM
- hash
- Queue
- sorting
- Stack
- 넓이우선탐색
- Javascript
- 깊이우선탐색
- react-native-navigation
- react-native bind
- 이중우선순위큐
- Programmers
- Algorithm
- k번째수
Archives
- Today
- Total
개발 블로그
[프로그래머스/Javascript/Stack] 주식가격 본문
1. 서론
위 문제는 brute force를 사용하면 이중 루프를 통해서 쉽게 해결할 수 있지만, stack / queue 문제로 분류된 만큼 stack을 사용해서 문제를 풀었다.
2.문제설명(출처: programmers.co.kr/learn/courses/30/lessons/42584)
3. 문제풀이
1) 시간을 측정할 answer의 길이를 prices와 동일하게 맞춘다.
2) stack으로 사용할 배열을 생성한다.
3) 모든 prices에 대하여 아래 명령을 반복한다.
3-1) 최초의 경우(stack이 비어있는 경우) 이거나 주식 가격이 떨어졌다면, 아래 명령을 반복한다.
3-1-1) 주식 값이 떨어지기 이전 시간을 stack에서 가져온 뒤 t에 저장한다.
3-1-2) 현재 시간 - t를 answer[t]에 저장한다.
4) stack에 내용물들이 모두 없어질 때 까지 아래 명령을 반복한다.
4-1) stack에 있는 가격이 유지되었던 시간을 꺼낸 뒤, t에 저장한다.
4-2) 전체 시간(n - 1) - 가격이 유지되었던 시간(t)를 통해 가격이 떨어지지 않은 시간을 계산한다.
4. 결과코드
def solution(prices):
n = len(prices)
answer = [0] * n
stack = []
for i in range(n):
while stack and prices[stack[-1]] > prices[i]:
t = stack.pop()
answer[t] = i - t
stack.append(i)
while stack:
t = stack.pop()
answer[t] = n - 1 - t
return answer
'IT > Programmers' 카테고리의 다른 글
[프로그래머스/Javascript/Queue] 프린터 (0) | 2021.04.07 |
---|---|
[프로그래머스/Javascript/Stack+Queue] 기능개발 (0) | 2021.04.06 |
[프로그래머스/Javascript/Queue] 다리를 지나는 트럭 (0) | 2021.04.05 |
[프로그래머스/python/Heap] 더 맵게 (0) | 2021.04.05 |
[프로그래머스/Javascript/Heap] 이중우선순위큐 (0) | 2021.04.04 |