[백준 1874 파이썬] - 스택 수열

zsunny·2022년 7월 24일
1

📌 문제

💯 정답

• 방법 1. 틀림.. 테스트케이스부터 틀림

import sys
input = sys.stdin.readline

def push(x):
    stack.append(x)
    print("+")
    print(stack)
def pop():
    stack.pop()
    print("-")
    print(stack)

n = int(input())
seq = []
stack = []
flag = 0
for _ in range(n):
    seq.append(int(input()))

for i in range(1,n+2):
    if seq[flag] in stack:
        pop()
        flag += 1
    else:
        push(i)
        i += 1

• 방법 2. 정답!!

import sys
input = sys.stdin.readline

cnt = 1
flag = True
stack = []
op = []

n = int(input())
for i in range(n):
    num = int(input())
    while cnt <= num:       # num보다 같거나 작은 수 stack에 쌓음
        stack.append(cnt)
        op.append("+")
        cnt += 1
    if stack[-1] == num:    # num과 스택의 top 숫자가 같으면 제거
        stack.pop()         # ?!?!?
        op.append("-")
    else:
        flag = False        # 스택 수열을 만들 수 없음

if flag == False:
    print("NO")
else:
    for i in op:
        print(i)

📝 설명

• 방법 1.이 분명 손으로 로직 짰을 때는 문제가 없어보였는데 테스트케이스를 넣어보면 왜 틀리는지 모르겠다.. 조금 더 봐야할 문제인 것 같다
profile
매일 성장하는 예비 웹 개발자 🌱

0개의 댓글