티스토리 뷰

알고리즘/백준

백준 / 오큰수 python

4567은 소수 2021. 2. 6. 03:25

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

원래 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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함