👇🏻 문제
https://www.acmicpc.net/problem/17298
스택이란 이렇게 쓰는 거지를 알려주는 문제 같다.
스택에 인덱스를 넣어서 비교하는 방법과 스택에 값과 인덱스를 함께 넣어서 비교하는 방법이 있다.
나는 후자가 더 이해가 잘 가서 후자로...
import sys
A = int(sys.stdin.readline())
data = list(map(int, sys.stdin.readline().split()))
answer = [-1] * A
stack = []
for i in range(A):
while stack and stack[-1][0] < data[i]:
e = stack.pop()
answer[e[1]] = data[i]
stack.append([data[i],i])
for i in answer:
print(i, end=' ')
배울 점
1. 그렇지 않은 것에 -1를 출력하는 경우에는 애초에 답에 -1을 넣어놓자 (A를 굳이 문제에서 제시해준 이유)
2. 스택은 나중 값을 먼저 뺄 수 있다는 고리타분함에 창의력을 더해보잣
https://github.com/Seeun-Lim/BaekJoon/tree/master/%EC%8A%A4%ED%83%9D
'Python > 문제풀이' 카테고리의 다른 글
[➕ 오답노트] 백준 7576번 배열 BFS (0) | 2022.05.25 |
---|---|
[➕ 오답노트] 백준 11478번 (0) | 2022.05.19 |
[ ➕ 오답노트] 프로그래머스 해시 - 베스트앨범 (0) | 2022.05.11 |
[2021 KAKAO 블라인드 채용] 메뉴 리뉴얼 (0) | 2022.05.10 |
[2] 백준 13458번: 시험감독 (0) | 2022.04.27 |