[baekjoon]python #17298 ์คํฐ์
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
๐ซ์๊ฐ์ด๊ณผ
N = int(input())
arr = list(map(int,input().split()))
result = []
for i in range(N):
Max_V = -float('inf')
for j in range(i+1,N):
if arr[i] < arr[j]:
Max_V=max(Max_V,arr[j])
break
else:
Max_V=-1
if i == N-1:
Max_V=-1
result.append(Max_V)
print(*result)
์ด์ค for๋ฌธ์ ์ฌ์ฉํด์ ํ์๋๋ฐ ์์ ๋ต์ ์ ๋์ค์ง๋ง O(n^2)์ ์๊ฐ๋ณต์ก๋๋ผ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฌ๋ค...
๐๋ฌธ์ ํด๊ฒฐ
N = int(input())
arr = list(map(int,input().split()))
answer = [-1]*N
stack=[]
for i in range(N):
while stack and (stack[-1][0] < arr[i]):
temp,idx = stack.pop()
answer[idx]=arr[i]
stack.append([arr[i],i])
print(*answer)
์ด ํ์ด๋ O(n^2)๋ฅผ ๊ฐ๋ ์ฝ๋์ด์ง๋ง ์ฒซ๋ฒ์งธ ์ฝ๋์ฒ๋ผ ๋ค ๋น๊ตํ๋๊ฒ ์๋๋ผ ํ์ํ ๋ถ๋ถ๊น์ง๋ง ๋น๊ตํด์ ํต๊ณผ๊ฐ ๋ ๊ฑฐ ๊ฐ๋ค.
๐ฎ๋ค๋ฅธ ์ฌ๋ ์ฝ๋
import sys
input = sys.stdin.readline
n = int(input())
seq = list(map(int,input().split()))
stack = []
for i in range(n):
while(stack):
if seq[i] > seq[stack[-1]]:
seq[stack.pop()] = seq[i]
else:
stack.append(i)
break
if not stack:
stack.append(i)
for i in stack:
seq[i] = -1
print(*seq)
'Problem Solving > BAEKJOON' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[baekjoon]python #17219 ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ (0) | 2023.01.11 |
---|---|
[baekjoon]python #18258 ํ2 (0) | 2022.11.17 |
[baekjoon]python #2108 ํต๊ณํ (0) | 2022.06.24 |
[baekjoon]python #4949 ๊ท ํ์กํ ์ธ์ (0) | 2022.06.24 |
[baekjoon]python #1966 ํ๋ฆฐํฐ ํ (0) | 2022.06.23 |
๋๊ธ