백준 1874 파이썬 (스택 수열)

철웅·2022년 10월 2일
0

BOJ

목록 보기
5/46

문제 : https://www.acmicpc.net/problem/1874

스택 자료구조를 활용하여 오름차순 수열을 만드는 문제.
머리가 안 좋아서 문제를 이해 하는 데만 10분은 걸린 듯 하다.


💻 Code

import sys
input = sys.stdin.readline

n = int(input())

cnt = 1
stack = []
result = []

for _ in range(n):
    data = int(input())

    # 1~입력값까지 오름차순 수열 만들기 **
    while( cnt <= data):  
        stack.append(cnt)
        cnt += 1
        result.append('+')
    
    # 같으면 뺀다
    if stack[-1] == data:
        stack.pop()
        result.append('-')
    else:
        print('NO')
        exit(0)
        
print('\n'.join(result))

  • 코드를 보면 입력 값을 하나씩 받게 된다.
    -> 한 번에 모든 입력값을 받을 필요는 없다. 천천히 하자

  • exit() : 코드를 강제종료 하고 싶을 때 사용
    - exit(0) : 성공적으로 프로그램 종료
    - exit(1) : 성공적으로 프로그램 종료 X

  • 코드에서 exit(0)대신 break문을 사용했다면 NO 이후에 result 스택도 출력 된다. (아래 코드도 실행되버린다)
    -> break 문은 반복문만 탈출!, exit()는 아예 프로그램 종료!

  • 입력 받을 때 처음에
    input = sys.stdin.readline을 선언하고 후에 input()으로 받는 방식도 있다. (가독성도 좋은듯?)

0개의 댓글