본문 바로가기

문제 풀이

백준 2164

 

풀이

뭔가 시키는 대로 하면 틀릴 거 같아서, 손으로 먼저 풀어보았다.

두 가지 사실을 얻을 수 있었다.

1) 항상 짝수만 고려해도 된다.

2) N이 홀수면 뒤로 넘기기부터, N이 짝수면 버리기부터 하면 된다.

 

그리고 가능 입력이 N=1이 가능하므로 그것까지 고려해주어야 한다.

 

import sys
from collections import deque
input = sys.stdin.readline

N = int(input().rstrip())
# 짝수만 고려
nums = [i for i in range(N) if i % 2 == 0]
q = deque(nums)

while len(q) > 1:
	if N % 2 == 0:
    	q.popleft()
        q.rotate(-1)
    else:
    	q.rotate(-1)
        q.popleft()
        
if len(q) == 0:
	print(1)
else:
	print(q[0])

'문제 풀이' 카테고리의 다른 글

백준 10799  (0) 2023.07.29
백준 1966  (0) 2023.07.25
백준 1920  (0) 2023.07.20
설탕 배달  (1) 2023.03.28
메뉴 리뉴얼  (0) 2023.03.24