티스토리 뷰
원래 C++로 풀려했지만, 무슨 이유에서인지 컴파일러가 출력을 안 시켜줘서 파이썬으로 풀었습니다.
(에러도 안 나고 해서 해결을 못했다. 코드가 잘못되었나 싶었지만, 다른 분들 푼 것과 비교해도 논리적으로 틀린 건 없어보여 그냥 파이썬으로 다시 짰다.)
stack을 이용해 푸는 문제입니다. 해당 숫자들의 index를 stack에 넣어주는데, 오큰수를 발견하면 해당 index를 갖는 배열의 값을 바꿔주는 것을 반복하면 됩니다.
코드는 다음과 같습니다.
import sys
n=int(input())
res=[-1 for i in range(n)]
arr=[]
stack=[]
if n==1:
num=int(input())
print(-1)
else:
arr = list(map(int,sys.stdin.readline().split()))
for i in range(n):
while len(stack)!=0 and arr[stack[-1]] < arr[i] :
res[stack[-1]] = arr[i]
stack.pop(-1)
stack.append(i)
for i in range(n):
print(res[i], end=' ')
'알고리즘 > 백준' 카테고리의 다른 글
백준 / 1707 이분 그래프 python3 (0) | 2021.02.11 |
---|---|
백준 / 2629 양팔저울 python3 (0) | 2021.02.11 |
백준 / 6588 골드바흐 추측 (0) | 2021.02.02 |
백준 / 11657 타임머신 C++ (0) | 2021.02.02 |
백준 / 15684 사다리 조작 C++ (0) | 2021.02.01 |
댓글