[백준 1874번] 스택 수열

eunseo kim 👩‍💻·2020년 12월 31일
0

👊 문제 풀기

목록 보기
1/17

📌 문제

👊 백준 1784번 - 스택 수열


📌 개념

stack list

  • 파이썬에서는 list를 사용하므로 stack 자료구조를 따로 제공하지 않는다.
  • 원소를 넣을 때는 list.append(원소)를 이용한다.
  • 원소를 뺄 때는 list.pop()을 이용한다.
  • 파이썬의 list는 stack 자료구조와 동일하게 가장 나중에 들어온 자료가 가장 먼저 처리되는 LIFO 자료구조이다.

📌 문제 해결

  • 원소를 뽑을 때에는 항상 스택의 최상위 원소가 입력한 값과 같을 때에만 출력 가능하다.
  • 파이썬에서 list의 맨 끝 원소(stack의 최상위 원소)를 뽑으려면 list[-1]처럼 index를 -1로 설정한다.

Code

n = int(input())

count = 1  # 현재 스택에 몇 번째 숫자까지 들어가 있는지 표시
stack = []
result = []

for i in range(1, n + 1):
    data = int(input())
    while count <= data:
        stack.append(count)
        count += 1
        result.append("+")
    if stack[-1] == data:  # 스택의 최상위 원소가 data와 같을 때에만 출력 가능
        stack.pop()
        result.append("-")
    else:  # 같지 않으면 불가능한 경우임
        print("NO")
        exit(0)

print("\n".join(result))
profile
열심히💨 (알고리즘 블로그)

0개의 댓글