[Python | 백준] 국회위원 선거

DEINGVELOP·2022년 9월 27일
0
post-custom-banner

📒 문제 정보




🔑  문제 풀이


시도 1 - 실패

사실 반례를 아무리 찾아 넣어 봐도 왜 틀린지 모르겠는 코드이다. 틀린 이유를 찾지 못했지만 결국 이건 엎고 다시 코드를 짰다. (반례 발견하시면 댓글로 알려주세요😥)

other_candidates = int(input()) - 1
dasom = int(input())

max_candidate = 0
answer = 0

for cnt in range(other_candidates):
    candidate = int(input())

    while candidate > dasom:
        candidate -= 1
        dasom += 1
        answer += 1

    if max_candidate < candidate:
        max_candidate = candidate

if dasom == max_candidate:
    answer += 1

print(answer)



시도 2 - 성공

n = int(input())
dasom = int(input())
candidates = [int(input()) for _ in range(n-1)]
answer = 0

if candidates:
    while dasom <= max(candidates):
        candidates[candidates.index(max(candidates))] -= 1
        dasom += 1
        answer += 1

print(answer)



💡  What I learned


  • for _ in range(n) : 원래 알았는데 까먹었었다.

  • 반례가 아주 많은 문제였다. 순차적으로 구현하면 예외처리가 아주 까다롭기 때문에 최댓값으로 비교하여 푸는 것이 가장 깔끔한 걸로!

  • 결국 예외처리를 빡세게 하는 것보단, 자꾸 오류가 나면 접근 방식을 바꾸자.

post-custom-banner

0개의 댓글