4/6 스터디 문제

1번 문제.
https://www.acmicpc.net/problem/1417
-> 국회의원 선거

1-1번 문제 풀이 코드

import sys

# 후보자수 등록
n = int(sys.stdin.readline())
# 후보자별 득표수 입력
votes = []
# 매수할 인간수
count = 0

# 후보자가 다솜 혼자면 당연히 당선되므로
if n <= 1:
    print(0)
else:
    # 나머지 후보자들의 득표수
    for _ in range(n):
        votes.append(int(sys.stdin.readline().strip()))
    dasom = votes[0]
    while dasom <= max(votes):
        # 다솜이 아닌 최대득표수를 가지는 후보자의 인덱스 값을 확인
        max_others = votes.index(max(votes))
        # 그 인덱스의 후보자의 투표자를 한명씩 매수
        votes[max_others] -= 1
        dasom += 1
        count += 1
    print(count)

=======================================================
모든 예제 답은 나오는데, 틀렸다.
하지만,
3
99
1
1
을 입력하면 0이 나와야 하는데 1이 나와버린다.
즉, 다솜이도 max(votes)에 들어갈 수 있다는 이야기!

1-2번 문제 풀이 코드

import sys

# 후보자수 등록
n = int(sys.stdin.readline())
# 후보자별 득표수 입력
votes = []
# 매수할 인간수
count = 0

# 후보자가 다솜 혼자면 당연히 당선되므로
if n <= 1:
    print(0)
else:
    # 나머지 후보자들의 득표수
    for _ in range(n):
        votes.append(int(sys.stdin.readline().strip()))
    dasom = votes[0]
    while dasom <= max(votes):
        # 다솜이 아닌 최대득표수를 가지는 후보자의 인덱스 값을 확인
        # 다솜이를 제외하고 그 수에서 최대값을 구해야한다.
        max_others = votes.index(max(votes[1:]))
        # 그 인덱스의 후보자의 투표자를 한명씩 매수
        votes[max_others] -= 1
        dasom += 1
        count += 1
    print(count)

=======================================================
오늘은 여기까지

좋은 웹페이지 즐겨찾기