반응형
스택을 사용해 풀 수 있는 문제.
_ = input() # len(arr) 값과 똑같아서 패스
arr = list(map(int, input().split()))
stack = []
# 값이 없으면 -1을 입력해야 하므로, 기본값으로 -1 설정
result = [-1 for _ in range(len(arr))]
# arr 맨 앞부터 시작. i는 각 배열의 index
for i in range(len(arr)):
# 스택 맨 위의 값 (arr[stack[-1]]) 보다 arr[i]의 값이 더 클 경우 = 오큰수의 정의
while len(stack) != 0 and arr[stack[-1]] < arr[i]:
# 스택의 값을 빼고, result에 arr[i] 값을 입력한다.
result[stack.pop()] = arr[i]
# while문을 빠져나왔으면, 현재 arr[i] 값을 stack에 저장.
stack.append(i)
print(*result)
반응형
'프로그래밍 > 코딩테스트 문제풀이' 카테고리의 다른 글
[Python] 프로그래머스. 가장 먼 노드 (Level 3) (0) | 2019.10.30 |
---|---|
[Python] 백준 17142. 연구소 3 (0) | 2019.10.29 |
[Python] 프로그래머스. 2018 카카오 Recruit - 추석 트래픽 (0) | 2019.10.28 |
[Python] 프로그래머스. 숫자 게임 (Level 3) (0) | 2019.10.26 |
[Python] 백준 1766. 문제집 (0) | 2019.10.25 |