백준 문제 탭 중 문제 순위 탭을 이용하여 위에서부터 문제를 풀다가 발견한 문제.
알고리즘 분류를 봐버려서 김샜다.
스택인지 몰랐다면 정말 오래 걸렸을 문제다.
그래서 난이도도 골드 4.
import sys
N = int(sys.stdin.readline().rstrip())
A = list(map(int, sys.stdin.readline().rstrip().split()))
stack = []
answer = [-1] * len(A)
for i in range(len(A)):
while stack and stack[-1][1] < A[i]:
idx, _ = stack.pop()
answer[idx] = A[i]
stack.append((i, A[i]))
print(*answer)
import sys
N = int(sys.stdin.readline().rstrip())
A = list(map(int, sys.stdin.readline().rstrip().split()))
stack = []
answer = [-1] * len(A)
for i in range(len(A)):
while stack and A[stack[-1]] < A[i]:
answer[stack.pop()] = A[i]
stack.append(i)
print(*answer)
굳이 val을 저장할 필요가 없었다!
Answer #1에서도 val을 _
변수로 꺼냈으니 말이다.