https://www.acmicpc.net/problem/17298
17298번: 오큰수
첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.
www.acmicpc.net
풀다가 시간초과가 떠서 다른 분들의 코드를 참고하면서 이해했다.
역시 나는 쓰면서 해야 머리가 돌아간다....😂
풀이 코드
import sys
n = int(sys.stdin.readline())
number = list(map(int, sys.stdin.readline().split()))
stack = [] # index
result = [-1] * n
for i in range(n):
# 스택이 비어있지 않음
# number[3] > number[2] --> number[3] > number[1] 순으로 진행
while stack and number[i] > number[stack[-1]]:
result[stack.pop()] = number[i]
stack.append(i)
print(*result)
'공부 > 알고리즘' 카테고리의 다른 글
[알고리즘][백준] 10820번 문자열 분석 - 파이썬(python) 풀이 (1) | 2024.02.27 |
---|---|
[알고리즘][백준] 10808번 알파벳 개수 - 파이썬(python) 풀이 (1) | 2024.02.26 |
[알고리즘][백준] 1918번 후위 표기식 - 파이썬(python) 풀이 (0) | 2024.02.26 |
[알고리즘][백준] 1935번 후위 표기식2 - 파이썬(python) 풀이 (1) | 2024.02.25 |
[알고리즘][백준] 17299번 오등큰수 - 파이썬(python) 풀이 (1) | 2024.02.25 |