본문 바로가기
Algorithm/스택&큐&덱&힙

[백준] 1874번 스택 수열

by HANNI하니 2023. 1. 20.

사용 언어 - Python3

1874번: 스택 수열 (실버2, 스택)

문제 ★스택 문제

 

1874번: 스택 수열

1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.

www.acmicpc.net

 

 

정답

스택 문제 !!

(코드 풀이)

1. stack 쌓기

cur 변수를 이용해서 입력값인 num과 같아질때까지 1씩 증가시키며 빈 리스트 stack에 append해준다.

cur == num 인 경우, stack의 마지막 원소인 stack[-1]은 num과 같아질 것 이고, 이 때 pop을 진행한다.

append할 땐 +를 pop할땐 -를 빈 리스트 answer에 append해준다.

2. 예외 처리

flag = 0을 선언하여 예외인 경우를 처리해준다.

예외인 경우, flag = 1로 선언하고 더이상 for문을 진행할 필요가 없으므로 break 해준다.

flag = 1인 경우, answer 리스트를 출력해준다.

# 정답

n = int(input())
stack = []
answer = []
flag = 0
cur = 1

for i in range(n):
    num = int(input())
    
    while num >= cur:
        stack.append(cur)
        answer.append("+")
        cur += 1
        
    if stack[-1] == num:
        stack.pop()
        answer.append("-")
    else:
        print("NO")
        flag = 1
        break
        
if flag == 0:
    for i in answer:
        print(i)

 

  • 깃허브 정답
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

'Algorithm > 스택&큐&덱&힙' 카테고리의 다른 글

[백준] 2164번 카드2  (0) 2023.01.22
[백준] 18258번 큐 2  (0) 2023.01.21
[백준] 9012번 괄호  (0) 2023.01.20
[백준] 10773번 제로  (0) 2023.01.20
[백준] 10828번 스택  (0) 2023.01.20

댓글