반응형
https://www.acmicpc.net/problem/25556
소스코드
풀이
★ 핵심은 각각의 스택의 최상단 값보다 스택에 넣으려고 하는 값이 커야한다는 것입니다 !
ex)
예제와 같이 5,4,3,2,1이 주어졌을 때 스택 4개에 5,4,3,2가 각각 들어가고 1이 아무 스택에나 들어간다고 하더라도 그 스택들을 하나씩 뽑아서 오름차순을 만들 수 없습니다 !
[5],[4],[3],[2,1]처럼 수가 들어간 경우 4번째 스택에서는 1이 먼저 나오고 2가 나오기 때문에 이미 내림차순 형태가 되어버립니다.
★ 구현하는 과정에서 for ~ else 구문을 사용하였습니다. 만약 for문이 break에 걸리지 않고 정상적으로 종료된 경우 else문을 실행하게 되는데, 이중 for문 안에 else는 만약 해당 수가 스택 어디에서 들어갈 수 없다면 오름차순을 만들 수 없기에 'NO'를 출력하고 for문을 종료합니다. 첫 반복문의 else는 만약 반복문이 'NO'로 종료되지 않았다면 모든 수가 stack에 들어갔고, 이 수들을 오름차순 정렬할 수 있기에 'YES"를 출력합니다.
★ 한가지 팁은 스택을 각각 따로 만드는 것이 아니라 하나의 리스트 안에 만드는 것입니다. 결국 스택을 돌면서, 조건에 맞춰 수들을 넣어줘야 하는데 스택을 각각 따로 만들면 이 과정이 많이 번거롭기 때문입니다 ! 그렇기에 하나의 리스트 안에 만들어 반복문을 돌며 ( for j in range(4) ) 확인해주는 것이 유용합니다 :)
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준 알고리즘] 11052번: 카드 구매하기 (Python) (6) | 2023.08.17 |
---|---|
[백준 알고리즘] 2193번: 이친수 (Python) (17) | 2023.08.16 |
[백준 알고리즘] 27497번: 알파벳 블록 (Python) (0) | 2023.08.16 |
[백준 알고리즘] 3111번: 검열 (Python) (1) | 2023.08.14 |
[백준 알고리즘] 16496번: 큰 수 만들기 (Python) (0) | 2023.08.11 |