[Baekjoon] - 2164. ์นด๋“œ2(S4)

์˜ค๋™ํ›ˆยท2021๋…„ 12์›” 28์ผ
0

Baekjoon

๋ชฉ๋ก ๋ณด๊ธฐ
7/58
post-thumbnail

1. Problem ๐Ÿ“ƒ

๐Ÿ“š ์ถœ์ฒ˜ - 2164-์นด๋“œ2

๋ฌธ์ œ ์„ค๋ช…
N์žฅ์˜ ์นด๋“œ๊ฐ€ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ์นด๋“œ๋Š” ์ฐจ๋ก€๋กœ 1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ™์–ด ์žˆ์œผ๋ฉฐ, 1๋ฒˆ ์นด๋“œ๊ฐ€ ์ œ์ผ ์œ„์—, N๋ฒˆ ์นด๋“œ๊ฐ€ ์ œ์ผ ์•„๋ž˜์ธ ์ƒํƒœ๋กœ ์ˆœ์„œ๋Œ€๋กœ ์นด๋“œ๊ฐ€ ๋†“์—ฌ ์žˆ๋‹ค.

์ด์ œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋™์ž‘์„ ์นด๋“œ๊ฐ€ ํ•œ ์žฅ ๋‚จ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋œ๋‹ค. ์šฐ์„ , ์ œ์ผ ์œ„์— ์žˆ๋Š” ์นด๋“œ๋ฅผ ๋ฐ”๋‹ฅ์— ๋ฒ„๋ฆฐ๋‹ค. ๊ทธ ๋‹ค์Œ, ์ œ์ผ ์œ„์— ์žˆ๋Š” ์นด๋“œ๋ฅผ ์ œ์ผ ์•„๋ž˜์— ์žˆ๋Š” ์นด๋“œ ๋ฐ‘์œผ๋กœ ์˜ฎ๊ธด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด N=4์ธ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์ž. ์นด๋“œ๋Š” ์ œ์ผ ์œ„์—์„œ๋ถ€ํ„ฐ 1234 ์˜ ์ˆœ์„œ๋กœ ๋†“์—ฌ์žˆ๋‹ค. 1์„ ๋ฒ„๋ฆฌ๋ฉด 234๊ฐ€ ๋‚จ๋Š”๋‹ค. ์—ฌ๊ธฐ์„œ 2๋ฅผ ์ œ์ผ ์•„๋ž˜๋กœ ์˜ฎ๊ธฐ๋ฉด 342๊ฐ€ ๋œ๋‹ค. 3์„ ๋ฒ„๋ฆฌ๋ฉด 42๊ฐ€ ๋˜๊ณ , 4๋ฅผ ๋ฐ‘์œผ๋กœ ์˜ฎ๊ธฐ๋ฉด 24๊ฐ€ ๋œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ 2๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ๋‚˜๋ฉด, ๋‚จ๋Š” ์นด๋“œ๋Š” 4๊ฐ€ ๋œ๋‹ค.

N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ œ์ผ ๋งˆ์ง€๋ง‰์— ๋‚จ๊ฒŒ ๋˜๋Š” ์นด๋“œ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ
์ฒซ์งธ ์ค„์— ์ •์ˆ˜ N(1 โ‰ค N โ‰ค 500,000)์ด ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ
์ฒซ์งธ ์ค„์— ๋‚จ๊ฒŒ ๋˜๋Š” ์นด๋“œ์˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

์˜ˆ์ œ ์ž…๋ ฅ์˜ˆ์ œ ์ถœ๋ ฅ
64

2. Logic ๐Ÿ‘จโ€๐Ÿซ

Logic 1
์ œ์ผ ๋จผ์ € ์ ‘๊ทผํ–ˆ๋˜ ๋ฐฉ๋ฒ•์€ QUEUE์ด๋‹ค.
๋ฌธ์ œ์— ๋‚˜์™€์žˆ๋Š” ๊ทธ๋Œ€๋กœ ํ๋ฅผ ์ด์šฉํ•ด ํ’€์—ˆ๋”๋‹ˆ ๋ฐ”๋กœ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ–ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์€ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋œฌ ์ฝ”๋“œ์ด๋‹ค.
๊ทธ๋ž˜์„œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ 1/4๊นŒ์ง€ ์ค„์—ฌ๋ดค์ง€๋งŒ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๊ณ„์† ๋œฌ๋‹ค.

Logic 2
๋‘ ๋ฒˆ์งธ ์ ‘๊ทผํ–ˆ๋˜ ๋ฐฉ๋ฒ•์€ collections์˜ deque์„ ์ด์šฉํ•ด๋ดค๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋œจ์ง€ ์•Š๋Š”๋‹ค. ์ฝ”๋“œ๋Š” ์œ„์˜ ์ฝ”๋“œ์™€ ๋น„์Šทํ•˜๋‹ค.

deque๋Š” '๋ฑ'์ด๋ผ๊ณ  ํ•˜๋ฉฐ Double Ended Queue์˜ ์•ฝ์ž์ด๋‹ค. ํ์™€ ์Šคํƒ์„ ๋‘˜ ๋‹ค ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ธ๋ฐ, ์–‘ ๋๋‹จ์—์„œ ๋ชจ๋‘ push์™€ pop์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
ํŒŒ์ด์ฌ์—์„œ collections ๋ชจ๋“ˆ ์•ˆ์˜ deque๋Š” CPython์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์„œ ์†๋„๋ฉด์—์„œ ํ›จ์”ฌ ๋น ๋ฅด๋‹ค๊ณ  ํ•œ๋‹ค.

Logic 3
๋งˆ์ง€๋ง‰์œผ๋กœ ์ผ์ •ํ•œ ๊ทœ์น™์„ ๋ฐœ๊ฒฌํ•ด ๊ณต์‹์„ ์ฐพ๊ฒŒ ๋˜๋ฉด ์‹œ๊ฐ„ ๋ณต์žก๋„ ์ธก๋ฉด์—์„œ ์šฐ์œ„๋ฅผ ์ฐจ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค ์ƒ๊ฐ๋“ค์–ด ๋„์ „ํ•ด๋ณธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

--InputOutput
22
32
44
52
64
76
88

์œ„์™€ ๊ฐ™์ด Input์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, Output๋„ ์œ„์™€ ๊ฐ™์ด ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์œ„์˜ ํŠน์ง•์„ ๋ถ„์„ํ•ด ๋ณธ ๊ฒฐ๊ณผ ์•„๋ž˜์™€ ๊ฐ™์€ ํŠน์ง•์„ ๋„๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

3์ผ ๋•Œ : (3 - 2) * 2 = 2
4์ผ ๋•Œ : (4 - 2) * 2 = 4
5์ผ ๋•Œ : (5 - 4) * 2 = 2
6์ผ ๋•Œ : (6 - 4) * 2 = 4
7์ผ ๋•Œ : (7 - 4) * 2 = 6
8์ผ ๋•Œ : (8 - 4) * 2 = 8

>>> [ Input - 2**(Input > 2์˜ ์ œ๊ณฑ) ] * 2

3. Code ๐Ÿ’ป

1. Logic 1๐Ÿ˜ (์‹œ๊ฐ„ ์ดˆ๊ณผ)

N = int(input())

cardList = [i for i in range(1, N+1)]

while len(cardList) > 1:
    cardList.pop(0)
    cardList.append(cardList.pop(0))
print(cardList[0])

2. Logic 2๐Ÿ˜ (์„ฑ๊ณต)

from collections import deque
N = int(input())

deque = deque([i for i in range(1, N+1)])

while len(deque) > 1:
    deque.popleft()
    deque.append(deque.popleft())
print(deque[0])

3. Logic 3๐Ÿ˜ (์„ฑ๊ณต)

import sys
input = sys.stdin.readline

N = int(input()) 
square = 2 
while True: 
    if (N == 1 or N == 2): 
        print(N) 
        break 
    square *= 2 
    if (square >= N): 
        print((N - (square // 2)) * 2) 
        break

4. Feedback ๐Ÿ“š

1. collections.deque

๊ธฐ๋ณธ์ ์ธ ํ•จ์ˆ˜๋“ค์€ ์—ฌ๊ธฐ์„œ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.

profile
์‚ฝ์งˆ์˜ ๊ธฐ๋ก๋“ค๐Ÿฅ

0๊ฐœ์˜ ๋Œ“๊ธ€