대회명/문제출처: 백준 오큰수 (17298)
https://www.acmicpc.net/problem/17298
유형: Greedy
<풀이방법>
참고를 많이 했다..
그리디 방법은 다 이렇게 풀면 되겠다는 생각이 들었다.
1) 현재 상태에서 가장 큰수를 찾아야한다.
처음에는 itertools 모듈을 써보려 했지만! 시간 제한이 있어서 패스 (itertools은 기본적으로 O(N^2) 정도라고..)
참고해서 풀었기 때문에 풀이는 비슷하나 이제는 완벽하게 이해했다!
스택을 이용해서 마지막 값이랑 계속 비교하면서, 작다면 pop하면서 answer 배열에 넣어주었다.
n=int(input())
lst=list(map(int,input().split()))
answer=[-1]*n
stack=[]
for i in range(n):
while stack and lst[stack[-1]]<lst[i]:
answer[stack.pop()]=lst[i]
stack.append(i)
for i in range(n):
print(answer[i],end=" ")
2단계는 거뜬하지 싶었는데 ㅜㅜㅜㅜ 자신감 떨어저라..ㅜ.ㅜ
'코딩테스트' 카테고리의 다른 글
[python] (백준) 크게 만들기 (0) | 2023.09.25 |
---|---|
[python] (프로그래머스) 택배 배달과 수거하기 (0) | 2023.09.17 |
[python] (프로그래머스) 미로 탈출 명령어 (1) | 2023.08.28 |
[C++] (프로그래머스) 폰켓몬 (0) | 2023.03.03 |
[C++] (프로그래머스) 정수 삼각형 (0) | 2022.03.19 |