백준 17298

yellowsubmarine372·2023년 1월 12일
0

백준

목록 보기
2/38

<오큰수 구하기> 문제

난이도 : 골드 4

  1. 백준 문제
    백준 17298

  2. 코드 알고리즘

  3. 코드

import sys

n = int(sys.stdin.readline())
A=list(map(int, sys.stdin.readline().split()))
ans_stack=[]

for i in range(n):
    while ans_stack and A[ans_stack[-1]] <  A[i]:
        A[ans_stack.pop()] = A[i]
    ans_stack.append(i)

for i in range(len(ans_stack)):
    A[ans_stack.pop()]=-1

print(*A)
  1. 후기

    • 인덱스!!

    당연히 수열 값을 스택에 저장해야 될 줄 알았는데 인덱스를 스택에 저장할줄은 생각못했다..!

    참신한 아이디어, 요런 아이디어 기억해놓도록하자

    • 조건문

    그리고 생각보다 코드가 짧아서 허무...

    스택이 빈경우 / 찬 경우

    수열 값이 top보다 큰 경우 / 작은 경우

    나누어야 될 경우가 많은 줄 알고

    if문 else문 안에 또 while문 나누고 난리 났었다ㅋㅋ

    근데 스택이 찬 경우 && 수열 값이 top보다 큰 경우만 특수한 경우고 나머지는 다 while 문 이외에 배치하면 끝ㅎㅎ

    논리를 생각할 때 경우가 과연 정말 많은지 생각해보자!

profile
for well-being we need nectar and ambrosia

0개의 댓글