오늘 문제는 어제 leetcode에서 푼 문제랑 똑같았다 캬캬 그래서 뚝딱 뚜룩딱 하니까 풀렸다 ㅎㅎㅎ
import sys
N = int(sys.stdin.readline())
A = list(map(int, sys.stdin.readline().strip().split()))
stack = []
answer = [-1]*len(A)
for i, a in enumerate(A):
while stack and a > A[stack[-1]]:
index = stack.pop()
answer[index] = A[i]
stack.append(i)
for i in answer:
print(i, end=" ")
근데 사실 leetcode 문제랑 너무 똑같아서 더 설명할 게 없다...
(leetcode 문제: https://velog.io/@drizzle0171/%EC%BD%94%ED%85%8C-%EC%8A%A4%ED%84%B0%EB%94%94-Week-2)
조금 다른 부분은 더 큰 수가 없으면 -1을 출력하라는 부분이었는데 이것도 초기 값을 모두 -1로 설정해주면 된다. 이 부분에서 조오금 헤매긴 했는데, 그래도 금방 답을 찾았다!
다른 풀이를 찾아보려 했으나... 대부분의 풀이가 이런 방식이고, 초기 설정 (stack이 아니라 deque을 쓴다든지)이 조금 다른 건 있어도 전체적인 프로세스는 똑같다 !...
그러므로 오늘의 알고리즘 세계(?)는 여기서 끝!