[문제출처 : Codechef] 이번에 풀어볼 문제는 게임의 승자를 찾는 문제입니다. 다음과 같은 게임이 있다고 가정해 봅시다.

두 명의 플레이어가 게임을 진행합니다. 총 N라운드가 진행되는데, 이 때 각 라운드까지의 누적 점수의 차이가 가장 크게 벌어진 라운드를 이긴 승자가 우승자가 되는 룰입니다.

즉, 만약 1라운드에서 10:5로 선수1이 이기고,
2라운드에서 6:8로 선수2가 이기고,
3라운드에서 5:10로 선수2가 이겼다고 했을 때,

1라운드까지 누적 점수는 10:5, 2라운드까지 누적 점수는 16:13, 3라운드까지 누적 점수는 21:23으로써, 결국 총점에서는 선수2가 이겼지만, 각 라운드까지의 누적점수의 차이는 1라운드 때 5점으로써 선수1이 최종 우승을 하게 됩니다.

선수1과 선수2의 각 라운드 점수가 list의 형태로 주어진다고 가정해 봅시다.(P1, P2)

def winnerOfGame(P1, P2):
	#먼저 첫 라운드의 결과를 result로 기록해 둡니다.
	sum1, sum2 = P1[0], P2[0]
    if sum1 > sum2:
        result = (sum1-sum2, "Player 1")
    else:
        result = (sum2-sum1, "Player 2")
    
    #다음라운드부터 쭉 돌면서,
    for i in range(1, len(P1)):
        sum1 += P1[i] #각각 플레이어의 누적 점수를 구하고,
        sum2 += P2[i]

        #얼마나 크게 이겼는지와 누가 이겼는지를 담아둡니다.
        if sum1 > sum2:
            diff = sum1 - sum2 
            player = "Player 1"
        else:
            diff = sum2 - sum1
            player = "Player 2"

        #만약 해당 라운드의 차이 값이 기존의 최대 차이값보다 크면, result를 업데이트합니다.
        if diff > result[0]:
            result = (diff, player)

    #최종 승자와 그 점수 차이를 리턴합니다.
    return result

가장 기초적인 for문과 if문들을 활용한 문제라고 할 수 있습니다. 물론 list나 tuple의 구조에 대해서도 잘 이해하고 계셔야겠죠? 이제 결과를 확인해 보면,

>>> P1=[140, 89, 90, 112, 88]
>>> P2=[82, 134, 110, 106, 90]
>>> print winnerOfGame(P1, P2)
(58, 'Player 1')

결과가 잘 나옴을 확인할 수 있습니다 :) 간단한 문제이니 꼭 한번씩 구현해 보시길 ~