티스토리 뷰

반응형

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

 


⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 자료 구조
  • 스택

 


 

⊙ 문제 접근 과정

 

힌트를 보고 이해했다. 만약 문제가 이해하기 힘들면 힌트를 바로 보자.

 


힌트: 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]을 얻을 수 있다.


 

가능할 경우의 계산을 배열에 전부 담아놔야 한다. 결과를 바로바로 출력할 시

만약 불가능한 부분에 막히면 NO 하나만 출력해야 하는데

이미 +, - 등이 출력해져 있으면 안 되기 때문이다.

 

그리고 전부 가능하다면 그때 배열에 담아뒀던 결과를 하나씩 출력해주면 된다.

 

가능, 불가능은 bool을 사용하여 판별해줬다.

 


 

⊙ 문제 풀이

 

N = int(input())

q = []
op = []
count = 1
flag = True

for i in range(N):
    x = int(input())
    while count <= x:
        q.append(count)
        count += 1
        op.append('+')
    if q[-1] == x:
        q.pop()
        op.append('-')
    else:
        flag = False

if not flag:
    print('NO')
else:
    for i in op:
        print(i)

 


⊙ 결과

 


⊙ 마무리

 

 

NONE

 

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함