Algoritm/BOJ

[BOJ] 1874번: 스택 수열

twoDeveloper 2022. 9. 6. 13:49

■ 문제해결

처음 문제를 읽어보면서 풀이를 진행하는데 이해하기가 어려웠고, 구글링을 통해 해답을 보며 이해하였다.

stack에 값이

---

[1]

[1, 2]

[1, 2, 3]

[1, 2, 3, 4]

---

다음과 같이 push되게 된다. 다음 과정에서 data 즉 입력 받는 값이 stack 의 최상단의 값인 '4'와 같게 된다면 pop 시키고 '-' 값을 ans에 push하며 풀이된다.

 

문제를 이해하는데 어려움이 있었지만 push, pop을 이용한 간단한 알고리즘 문제였다. 


■ 문제해답

import sys
input = sys.stdin.readline

n = int(input())

stack = []
ans = []
count = 1
result = True

for i in range(n):
  data = int(input())

  while count <= data:
    stack.append(count)
    ans.append('+')
    count += 1
  
  if stack[-1] == data:
    stack.pop()
    ans.append('-')
  else:
    result = False

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

 


■ 문제출처

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

 

'Algoritm > BOJ' 카테고리의 다른 글

[BOJ] 10845번: 큐  (0) 2022.09.06
[BOJ] 1406번: 에디터  (0) 2022.09.06
[BOJ] 9012번: 괄호  (0) 2022.09.06
[BOJ] 9093번: 단어 뒤집기  (0) 2022.09.06
[BOJ] 10828번: 스택  (0) 2022.09.06