practivceAlgorithm/swexpertacademy

[SWEA][Python] 4880 토너먼트 카드 게임

findTheValue 2021. 8. 20. 02:15

재귀구조 잘 잡은건가 싶기도하고 뭔가 줄일수 있을 것 같기도 한데..

일단 번호랑 숫자 묶어서 깊게 갔다가 둘남으면 가위바위보하고 나와서 승자끼리 가위바위보 시켰음.

 

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