Baekjoon #21315

Baekjoon #21315

1개의 풀이 · Python

문제 원문 보기 ↗

SOLUTION INFO

Python · main.py

main.py
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)))

SOLUTION DESCRIPTION

풀이 설명

등록된 풀이 설명이 없습니다.