알고리즘/구현

[백준]1091 카드섞기 #인덱스

씩씩한 IT블로그 2020. 10. 15. 14:16
반응형

그냥 하라는대로 하면 되는문제인데 인덱스 장난이 심한 문제.

그래서 코딩에서 가장 중요한건 차분히 침착하게 푸는것 이라는것을 다시한번 상기시키는 문제.

침착해 침착해

from copy import deepcopy

N=int(input())

P=list(map(int,input().split()))
S=list(map(int,input().split()))

#카드덱
dq=[i for i in range(N)]

#현재 플레이어상태
player=[[] for i in range(3)]
for i in range(N):
    p=i%3
    player[p].append(i)

ini=deepcopy(player)

#목표값
target=[[] for i in range(3)]
for i in range(N):
    target[P[i]].append(i)

ans=0

while(1):
    if target==player:
        break
    if ans>=1 and player==ini:
        ans=-1
        break

    ans+=1

    #섞기
    temp = [-1 for i in range(N)]
    for i in range(N):
        c=dq[i]
        temp[S[i]]=c
    for i in range(N):
        dq[i]=temp[i]

    #나눠주기
    tempPlayer=[[] for i in range(3)]
    for i in range(N):
        p=i%3
        tempPlayer[p].append(dq[i])
    for i in range(3):
        tempPlayer[i].sort()

    player=deepcopy(tempPlayer)


print(ans)





반응형