문제
2164번: 카드2
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
코드
My answer
import sys
from collections import deque
input=sys.stdin.readline
n=int(input())
stack=deque([i+1 for i in range(n)])
while(len(stack)!=1):
stack.popleft()
a=stack[0]
stack.popleft()
stack.append(a)
print(*stack)
Another answer
n,s=int(input()),1
while s<n:
s*=2
print(s if s==n else 2*n-s)
풀이
맨처음에는 그냥 pop을 써서 풀었었는데 시간초과가 떴다. 그래서 deque를 썻더니 무사히 통과했다. 아래 코드는 규칙을 따로 발견해서 푼 코드인데, 시간은 매우 빠른데 문제를 직관적으로 보면 그냥 스택을 이용하는게 제일 좋은 것 같다?.
728x90
반응형
'코딩테스트 > 백준[Python]' 카테고리의 다른 글
[Python] 백준 #4949- 균형잡힌 세상 (0) | 2022.01.19 |
---|---|
[Python] 백준 #1874- 스택 수열 (0) | 2022.01.19 |
[Python] 백준 #18258 - 큐 2 (0) | 2022.01.19 |
[Python] 백준 #1059- 좋은 구간 (0) | 2022.01.19 |
[Python] 백준 #11399- ATM (0) | 2022.01.18 |