https://www.acmicpc.net/problem/2164
[오답] → 시간초과
이 문제의 시간초과를 해결하려면 collections 패키지의 deque 모듈을 사용해야 한다.
[정답]
※ 문제
"예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다.
1을 버리면 234가 남는다.(→ 맨 위의 수를 버린다.)
여기서 2를 제일 아래로 옮기면 342가 된다.(→ 맨 위의 수를 맨 밑으로 보낸다.)
3을 버리면 42가 되고, 4를 밑으로 옮기면 24가 된다.(→ 위의 과정을 반복한다.)
마지막으로 2를 버리고 나면, 남는 카드는 4가 된다.(→ 카드가 한 개 남을 때까지 while문을 돈다.)"
1. 카드의 개수 N을 입력받는다.
2. 입력받은 N을 역순으로 deque의 형태로 card_queue에 넣어준다.
3. card_queue의 len가 1이 될 때까지 while문을 돌면서, card_queue.pop()을 해주어 맨 위의 수를 버리고 card_queue.appendleft(card_queue.pop())을 해주어 맨 위의 수를 맨 밑으로 보낸다.
4. 최종적으로 card_queue[0]을 출력한다.
- card_queue.pop() : 맨 오른쪽 요소 제거
- card_queue.appendleft(_) : 맨 오른쪽에 인자값 추가
[참고]
https://blog.naver.com/dororong97/222043874298
'알고리즘 공부 > 백준 > Python3' 카테고리의 다른 글
[백준 파이썬] #5635: 생일 (0) | 2021.01.29 |
---|---|
[백준 파이썬] #18258: 큐2 (0) | 2021.01.28 |
[백준 파이썬] #10817: 세 수 (0) | 2021.01.26 |
[백준 파이썬] #2935: 소음 (0) | 2021.01.26 |
[백준 파이썬] #10828: 스택 (0) | 2021.01.21 |