문제풀이/BOJ

[Python] BOJ/백준 2456번 나는 학급회장이다

서채리 2021. 6. 17. 21:36

[문제]

https://www.acmicpc.net/problem/2456

 

2456번: 나는 학급회장이다

첫째 줄에는 반의 학생들의 수 N (3 ≤ N ≤ 1,000)이 주어진다. 다음 N개의 각 줄에는 각 학생이 제출한 회장후보 3명에 대한 선호 점수가 주어지는 데, 첫 번째 점수는 후보 1번에 대한 점수이고 두

www.acmicpc.net

 


[풀이]

처음에는 다중조건문으로 분류해서 풀어가던 중 다른 사람은 제곱한 수를 비교했다는 걸 보고 충격받았다.. 그러고 보니 개수를 비교할 필요 없이 제곱하면 자동적으로 비교가 된다는 것...

 

제곱한 수를 더해 비교한다는 방법만 알면 쉽게 풀 수 있는 문제가 된다.


[코드]

if __name__ == '__main__':
    candidate = [0] * 3
    squared = [0] * 3
    for _ in range(int(input())):
        a, b, c = map(int, input().split())
        candidate[0] += a
        candidate[1] += b
        candidate[2] += c

        squared[0] += a ** 2
        squared[1] += b ** 2
        squared[2] += c ** 2

    m = max(candidate)
    if candidate.count(m) == 1:
        for i in range(len(candidate)):
            if candidate[i] == m:
                print(i+1, m)
                break;
    else:
        pow_m = max(squared)
        elected = 0
        for i in range(len(squared)):
            if squared[i] == pow_m:
                elected = i
                break;

        # 회장 선출 불가능한 경우
        if squared.count(pow_m) > 1:
            print(0, candidate[elected])
        # 회장 선출 가능한 경우
        else:
            print(elected+1, candidate[elected])