python/알고리즘 문제풀이

[백준 | 파이썬3] 1874 스택 수열

빛날희- 2022. 2. 28. 22:13

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씩 증가시킨 수를 추가한다. 

- 스택의 마지막 요소 값과 입력의 첫번째 값이 일치하면 스택의 마지막 값과 입력의 첫번째 값을 뺀다. 

- 위 과정을 입력리스트가 빈 리스트가 될 때까지 반복한다. 

- 만일 스택의 마지막 요소 값이 입력의 첫번째 값보다 크다면 입력된 수열은 만들 수 없는 수열이므로 NO를 출력한다. 

 

> 코드

- line 5: stack에 값이 없을 때엔 인덱스 에러가 나기 때문에 stack의 마지막요소를 대신하여 i값을 비교값으로 사용한다.