백준 1874

yellowsubmarine372·2023년 1월 10일
0

백준

목록 보기
1/38
post-thumbnail

<스택으로 수열만들기> 문제

난이도 : 실버 3

  1. 백준 문제

    백준 1874

  2. 코드 알고리즘

  1. 코드
import sys

n = int(sys.stdin.readline()) #수열의 개수
a=[] # 입력받는 수열을 a로 정의 
b=[] # 스택을 b로 정의

for _ in range(n): 
	a.append(int(sys.stdin.readline())) #수열 a 입력 받기

num = 1 

result = '' #result 출력할 push, pop 연산 기호 모음

for i in range(n):
    if num<=a[i]: 
        while num<=a[i]: #a 수열 원소 값과 동일해질때까지 스택에 num 입력
            b.append(num)
            result += '+\n'
            num+=1
        b.pop() #같아지는 마지막 스택을 출력
        result += '-\n'
        continue
    else:
        top = b.pop()
        if top >a[i]: #스택으로 수열을 구현 못할 경우
            print('NO')
            result=False
            break
        else : 
            result += '-\n'
if result:
    print(result) #result=True일경우 출력
  1. 후기

    처음에 문제의 요지를 파악해내는데 가장 오래걸렸던 문제

    스택으로 수열을 구현하는데 제한이 없을 줄 알았는데

    선형 구조이기 때문에 순서 상관없이 원소 선택이 어려워 매우 제한이 많다!!

    제한이 많기 때문에 입력받을 수 있는 수열에 상당한 제한이 있는편!

    문제 설정이 제한되어 있음

profile
for well-being we need nectar and ambrosia

0개의 댓글