๐ข ์นด๋ ์๊ธฐ
1. ๋ฌธ์ ๋งํฌ
2. ์ฝ๋
PyPy3
110404KB
112ms
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
"""
[21315] ์นด๋ ์๊ธฐ
๐ ๋ฌธ์
๋ง์ ์ฌ ์์ฌ๋ ์นด๋ ๋๋ฏธ๋ฅผ ์ด์ฉํ ๋ง์ ์ ๊ฐ๋ฐํ์๋ค.
์นด๋๋ค์๋ 1๋ถํฐ N๊น์ง์ ์ซ์๊ฐ ์ ํ์์ผ๋ฉฐ ์ด๊ธฐ ์ํ์๋ 1์ด ๋งจ ์์ ์์ผ๋ฉฐ N๊ฐ์ ์นด๋๊ฐ ๋ฒํธ ์์๋๋ก ์์ฌ์๋ค.
์์ฌ๋ ๋ง์ ์ ์ํด (2, K) - ์๊ธฐ๋ฅผ ๋ง๋ค์๋ค.
(2, K) - ์๊ธฐ๋ ์ด K + 1๊ฐ์ ๋จ๊ณ๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ์นด๋ ๋๋ฏธ ์ค ๋ฐ์์ 2K๊ฐ์ ์นด๋๋ฅผ ๋๋ฏธ์ ๋งจ ์๋ก ์ฌ๋ฆฐ๋ค.
์ดํ i(2 โค i โค K + 1)๋ฒ์งธ ๋จ๊ณ๋ ์ง์ ์ ๋งจ ์๋ก ์ฌ๋ฆฐ ์นด๋ ์ค ๋ฐ์์ 2K - i + 1๊ฐ์ ์นด๋๋ฅผ ๋๋ฏธ์ ๋งจ ์๋ก ์ฌ๋ฆฐ๋ค.
์๋ฅผ ๋ค์ด, ์นด๋์ ๊ฐ์๊ฐ 5๊ฐ ์ผ ๋ ์ด๊ธฐ ์ํ์์ (2, 2) - ์๊ธฐ๋ฅผ ํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
(๊ดํธ ๋ด์์ ์ผ์ชฝ์ ์์์๋ก ์์ ์๋ ์นด๋์ด๋ค.)
(1, 2, 3, 4, 5) โ (2, 3, 4, 5, 1) โ (4, 5, 2, 3, 1) โ (5, 4, 2, 3, 1)
์์ฌ์ ๋ง์ ์ ์๋๋ฐฉ์ด ์ด๊ธฐ ์ํ์์ (2, K) - ์๊ธฐ๋ฅผ 2๋ฒ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ 2๋ฒ์ (2, K) - ์๊ธฐ์์ K๊ฐ ๊ฐ๊ฐ ๋ฌด์์ธ์ง ๋ง์ถ๋ ๋ง์ ์ด๋ค.
๋ง์ ์์ด๋์ด๋ ์๊ฐํ์ง๋ง, K๋ฅผ ์์๋ด๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๋ ์์ฌ๋ฅผ ์ํด K๋ฅผ ์์๋ด๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์.
2๋ฒ์ (2, K) - ์๊ธฐ ํ์ ์นด๋ ๋๋ฏธ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋๋ ๊ฐ๊ฐ์ K๋ ์ ์ผํจ์ด ๋ณด์ฅ๋๋ค.
๐ ์
๋ ฅ
์ฒซ ์ค์ N์ด ์ฃผ์ด์ง๋ค.
๋์งธ ์ค์ 2๋ฒ์ (2, K) - ์๊ธฐ ํ์ ์นด๋ ๋๋ฏธ๊ฐ ์์ ์๋ ์นด๋๋ถํฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ฃผ์ด์ง๋ค.
๐ ์ถ๋ ฅ
์ฒซ ๋ฒ์งธ K์ ๋ ๋ฒ์งธ K๋ฅผ ์ถ๋ ฅํ๋ค.
"""
# n๊ฐ์ ์นด๋,
# ์์ ์์๋๋ก ๋ชจ๋ ๊ฒ์ฌ(์นด๋ ์๊ธฐ)ํ์ฌ ์
๋ ฅ ๊ฐ๊ณผ ๊ฐ์ ์์ ์ฐพ๋ ๊ฒ
import math
n = int(input())
array = list(map(int, input().split()))
def card_shuffle(cardlist, index):
if index == 0:
return cardlist
divided = cardlist[len(cardlist)-index:]
return card_shuffle(divided, index//2) + cardlist[:len(cardlist)-index]
result = []
# 2^(k-i+1)๊ฐ์ ์นด๋๋ฅผ ๋๋ฏธ์ ๋งจ ์๋ก ์ฌ๋ฆฐ๋ค
M = int(math.log2(n))
for k1 in range(1, M+1):
for k2 in range(1, M+1):
cards = [i for i in range(1, n+1)]
if card_shuffle(card_shuffle(cards, 2**k1), 2**k2) == array:
result.append((k1, k2))
print(*result[0])
- ํด์ค
This post is licensed under CC BY 4.0 by the author.