본문 바로가기

Python(알고리즘,문제풀이)/BOJ(Silver II)

백준 / 1874번 / 스택 수열 / Python

728x90

📚문제

출처 : 백준 1874번(https://www.acmicpc.net/problem/1874)


📝풀이

# 1874번 스택 수열 
import sys
n = int(input())
stack = []
answer = []

flag = 0
cnt = 1
# sys.stdin.readline().strip()
for _ in range(n):
    num = int(input())
    while cnt <= num: 
        stack.append(cnt)
        answer.append('+')
        cnt += 1
        
    if stack[-1]==num:
        stack.pop()
        answer.append('-')
    else:
        print('NO')
        flag = 1
        break

if flag == 0:
    for i in answer:
        print(i)

 

Bronze III까지 차근차근 풀다가

solved.ac에서 CLASS라는 배너를 발견했다

프로그래밍 문제 해결에서 자주 마주하는 주제와 트릭들을 레벨별로 모아놓았다

 

CLASS1은 다 풀고 CLASS 2를 도전 중인데

중간 중간 실버도 섞여있다

 

이번 문제는

문제 이름도 그렇고 문제 분류도 자료구조 / 스택 으로 되어 있어서

자료구조 및 스택에 대해 공부하고 문제풀이도 해볼 겸 시도해 보았다

정말 어렵다...

심지어 구글링해서 코드를 참고하도 이해가 안되서 하나씩 손필기 해보면서 이해를 할 수 있었다

 

이런 문제는 직접 해보고 각 케이스에서 변수가 어떻게 바뀌는지 봐야

문제와 해답이 이해가 되는 스타일이어서 input 값 별로 확인해봤다

 

1) num = 4일때 

 

2) num = 3일때

 

3) num = 6일때

 

4) num = 8일때

 

.

.

.

.

이런 식으로 stack의 모든 값은 pop되고 

answer 는 예제의 답과 같은 형태를 가진다

728x90