Koala - 10기/코딩테스트 준비 스터디

[백준/1417] python 국회의원 선거

kjyook 2023. 5. 7. 21:44

총 후보가 몇 명인지와 각 후보의 득표수를 알고 있을때 이를 이용해서 구해야 하니 하나의 리스트를 이용해 정보를 보관하자. -> 몇 명이든지 정보를 기록하기에는 이 방법밖에 생각이 안난다.

이 리스트에서 나 -> 0번 원소가 최댓값이여야 한다. 따라서 다른 원소가 최댓값이라면 하나를 빼서 나에게 하나를 더 해주고 매수한 표를 하나씩 카운팅하는 법을 사용하자

이 방법을 사용하면 처음부터 내가 최대이거나 내가 최대가 되면 그만 해야하니까 if문과 while문을 야무지게 써주자. 하나 조심해야 할 부분은 내가 최댓값이여도 같은 표를 가진 사람이 있으면 한 표가 더 필요한거니 이 부분을 고려해야 한다.

이 부분들을 고려한 내 코드가 밑에 있다.

import sys

def main():
    N = int(sys.stdin.readline())
    vote = []

    if N == 1:
        print(0)
        return

    for _ in range(N):
        vote.append(int(sys.stdin.readline()))

    count = 0

    while True:
        if max(vote) == vote[0]:
            temp = []
            for i in vote:
                temp.append(i)
            temp.pop(0)
            if max(temp) == vote[0]:
                print(count + 1)
                return
            else:
                print(count)
                return
        
        vote[vote.index(max(vote))] -= 1
        vote[0] += 1
        count += 1

if __name__ == "__main__":
    main()