본문 바로가기
코딩테스트

백준(Baekjoon) 1874번 : 스택 수열 with Python

by CleanCoder 2021. 1. 22.

 

백준에서 문제 보기 : https://www.acmicpc.net/problem/1874

 

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

 

난이도

실버 3

 

알고리즘

1) N번 반복 입력

2) count로 값 세면서 stack에 저장 , 동시에 result 스택에도 '+' 저장

3) stack[-1] 번째 값이 입력값과 같을때 stack pop , result '-' 아닐시 NO

 

해결 방안

문제에서 요구하는 사항은 '스택'을 구현하여 해결하는 개념을 요구합니다

 

 

 

import sys

input = sys.stdin.readline

N = int(input())
stack = []
result = []
count = 0
flag = True
for i in range(N):
    num = int(input())
    while count < num:
        count += 1
        stack.append(count)
        result.append('+')
    if stack[-1] == num:
        stack.pop()
        result.append('-')
    else:
        flag = False
        break

if flag:
    print("\n".join(result))
else:
    print('NO')

 

출력

댓글