과정
1. stack을 이용해서 i값이 stack[-1]값보다 작으면 그대로 스택에 추가
2. stack[-1]값보다 크면 스택안에 있는 값들을 비교하여 작은 것들은 모두 i 값을 오큰수로 설정
3. index 설정을 위해 리스트를 index,value 튜플로 받음
4. 마지막에 스택에 남아있는 수들은 모두 오큰수를 -1로 설정
5. join을 이용해서 출력join의 경우, list안의 원소가 str일 경우만 가능해서 map(str,result)를 이용해서 출력
import sys
input=sys.stdin.readline
n=int(input())
a=list(map(int,input().split()))
for i in range(len(a)):
a[i]=(i,a[i])
stack=[]
result=[0 for i in range(n)]
for i in a:
if not stack:
stack.append(i)
else:
while True and stack:
index, value=stack.pop()
if value<i[1]:
result[index]=i[1]
else:
stack.append((index,value))
break
stack.append(i)
for index,val in stack:
result[index]=-1
print(' '.join(map(str,result)))
time:20분
ps. 스택 문제라는 걸 알고 풀어서 다시 풀어봐야겠다.