본문 바로가기
TIL - 프로그래밍/Python 알고리즘

[Python] baby-gin 재귀

by chaemj97 2022. 3. 27.
728x90
def perm(p_arr,used,idx):
    if idx >= N:
        # print(p_arr)
        # 출력이 아니라, baby-gin 인지 아닌지 확인
        # 0,1,2  / 3,4,5
        result = 0  # run 또는 triplet 개수세기
        if p_arr[0] == p_arr[1] and p_arr[0] == p_arr[2]:
            result += 1
        elif p_arr[0]+1 == p_arr[1] and p_arr[0]+2 == p_arr[2]:
            result += 1

        if p_arr[3] == p_arr[4] and p_arr[3] == p_arr[5]:
            result += 1
        elif p_arr[3]+1 == p_arr[4] and p_arr[3]+2 == p_arr[5]:
            result += 1

        # if result == 2:
        #     print('baby-gin!')
        return result == 2
        
    # p_arr[idx] 요소에 넣을 수 있는 모든 숫자들 다 넣어보기
    # idx보다 앞선 인덱스에서 사용한 숫자는 재사용 X
    for i in range(N): #모든 요소를 대상으로
        if not used[i]: # i번째 요소가 사용되지 않았으면 사용가능
            p_arr[idx] = arr[i]
            used[i] = 1 # i번 요소 사용했음을 표시
            if perm(p_arr, used, idx+1):
                return True
            used[i] = 0
    return False

N = 6
arr = list(map(int,input()))
print(perm([0]*N, [0]*N, 0))
728x90
반응형

댓글