총 후보가 몇 명인지와 각 후보의 득표수를 알고 있을때 이를 이용해서 구해야 하니 하나의 리스트를 이용해 정보를 보관하자. -> 몇 명이든지 정보를 기록하기에는 이 방법밖에 생각이 안난다.
이 리스트에서 나 -> 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()
'Koala - 10기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/Python] 1417번: 국회의원 선거 (0) | 2023.05.07 |
---|---|
[백준/Python] #5430 AC (0) | 2023.05.07 |
[백준/java] 5430 AC (0) | 2023.05.07 |
[백준/Python] 15903 카드 합체 놀이 (0) | 2023.05.06 |
[백준/C++] 5430 : AC (1) | 2023.05.06 |