성장일기

[python] 백준 1874 - 스택 수열 본문

알고리즘 문제

[python] 백준 1874 - 스택 수열

김몽몽 2022. 2. 4. 11:45

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

Q> 기본 스택 문제

1부터 n까지 수를 스택에 넣었다가 뽑아서 늘어놓음으로써 하나의 수열을 만듦

어떤 순서로 push와 pop을 해야하는지 작성

push는 +로 pop은 -로 표현, 불가능한 경우 NO

 

💥 출력 초과 코드

NO인 경우 NO만 출력되어야 하는데 앞의 연산이 모두 출력됨

import sys
input = sys.stdin.readline

n = int(input().rstrip())
stack = []
cnt = 1

for i in range(n):  
    data = int(input().rstrip())
    while cnt <= data:   # 1부터 시작하는 수열, 입력데이터까지 삽입
      stack.append(cnt)
      cnt += 1
      print('+')
    if stack[-1] == data:  # 스택의 마지막이 입력데이터와 같을때 pop
      stack.pop()
      print('-')
    else:
      print('NO')    # 아니면 NO

 

✨ result 리스트를 만들어서 넣고

그것을 출력

import sys
input = sys.stdin.readline

n = int(input().rstrip())
stack = []
result = []
cnt = 1

for i in range(n):  
    data = int(input().rstrip())
    while cnt <= data:   # 1부터 시작하는 수열, 입력데이터까지 삽입
        stack.append(cnt)
        cnt += 1
        result.append('+')
    if stack[-1] == data:  # 스택의 마지막이 입력데이터와 같을때 pop
        stack.pop()
        result.append('-')
    else:
        print('NO')    # 아니면 NO
        exit(0)

print('\n'.join(result))

'알고리즘 문제' 카테고리의 다른 글

골드 4 😥  (0) 2022.02.07
[python] 백준 17299 - 오등큰수  (0) 2022.02.07
[python] 백준 6064 - 카잉 달력  (0) 2022.01.26
[python] 백준 1374 - 강의실  (0) 2022.01.21
골드 5 🎉  (0) 2022.01.20