코테 대비 python/백준
21315 완전탐색 블루트포스 ==> 다시풀기
ylab
2023. 1. 27. 21:34
https://www.acmicpc.net/problem/21315
21315번: 카드 섞기
마술사 영재는 카드 더미를 이용한 마술을 개발하였다. 카드들에는 1부터 N까지의 숫자가 적혀있으며 초기 상태에는 1이 맨 위에 있으며 N개의 카드가 번호 순서대로 쌓여있다. 영재는 마술을
www.acmicpc.net
from itertools import permutations
import sys
def input():
return sys.stdin.readline().rstrip()
def shuffle(card1, card2, card3):
card = card2 + card1 + card3
if len(card2) > 1:
return shuffle(card2[:len(card2)//2] + card1, card2[len(card2)//2:], card3)
else:
card = card2 + card1 + card3
return card
n = int(input())
correct_cards = list(map(int,input().split()))
answer = []
orders = [i for i in range(1, 10)] + [i for i in range(1, 10)]
for perm in permutations(orders, 2):
if 2 ** max(perm)>=n:
continue
cards = [i for i in range(1, n+1)]
for k in perm:
card1 = []
card2 = cards[n-(2**k):]
card3 = cards[:n-(2**k)]
cards = shuffle(card1, card2, card3)
if cards == correct_cards:
answer = perm
break
print(' '.join(map(str, answer)))