재귀구조 잘 잡은건가 싶기도하고 뭔가 줄일수 있을 것 같기도 한데..
일단 번호랑 숫자 묶어서 깊게 갔다가 둘남으면 가위바위보하고 나와서 승자끼리 가위바위보 시켰음.
def rock_siccor_paper(fights):
length = len(fights)
if length==1:
return fights[0]
elif length==2:
if fights[0][1]==1:
if fights[1][1]==1 or fights[1][1]==3:
return fights[0]
elif fights[1][1]==2:
return fights[1]
elif fights[0][1]==2:
if fights[1][1]==1 or fights[1][1]==2:
return fights[0]
elif fights[1][1]==3:
return fights[1]
else:
if fights[1][1]==2 or fights[1][1]==3:
return fights[0]
elif fights[1][1]==1:
return fights[1]
else:
return rock_siccor_paper([rock_siccor_paper(fights[:(length+1)//2]),rock_siccor_paper(fights[(length+1)//2:])])
for test in range(1,int(input())+1):
N = int(input())
cards = list(map(int, input().split()))
cards_idx = [[idx+1,cards] for idx, cards in enumerate(cards)]
# 1가위, 2 바위 3 보
winner, number = rock_siccor_paper(cards_idx)
print(f'#{test} {winner}')
'practivceAlgorithm > swexpertacademy' 카테고리의 다른 글
[SWEA][Python] 4874 Forth (0) | 2021.08.20 |
---|---|
[SWEA][Python] 4875 미로 (0) | 2021.08.20 |
[SWEA][Python] 4881 배열 최소 합 (0) | 2021.08.20 |
[SWEA][Python] 5105 미로의 거리 (0) | 2021.08.20 |
[SWEA][Python] 5099 피자 굽기 (0) | 2021.08.20 |