본문 바로가기

Algorithm/정보올림피아드

알고리즘 > 자료구조A > 불쾌한날(1141)

Question


Solving


스택에 들어올 다음 수와 top과 비교한다.
1) top이 더 크다면 그냥 push, 
2) top이 작다면 pop하고, 
3) 다음 top과 다시 비교하여, top이 크다면 1) 로, 작다면 2) 로 간다.

주어진 테스트 케이스로 그려보면 아래와 같이 진행된다.

           2
           2       4       4                1
 5        5       5       5       6       6
[0]    [1]    [2]    [3]    [4]    [5]
 4       1       2       1       2       1
 3       0       1       0       1       0

위 표에서 4 1 2 1 2 1은 각 단계에서 push된 값이 몇 단계나 살아 남는지 적은 것이다.
5의 경우 0단계에서 push되어 3단계까지 살아남고 4단계에서 pop이 된다.

4 1 2 1 2 1 에 -1을 하면 3 0 1 0 1 0이 나오게 되고, 이것의 합이 우리가 구하고자하는 답이 된다.


Code