TIL - 프로그래밍/Python 알고리즘
[Python] baby-gin 재귀
chaemj97
2022. 3. 27. 23:10
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
반응형