[2456번] 나는 학급회장이다
Algorithm/백준 문제 풀이

[2456번] 나는 학급회장이다

반응형

백준 2456번: 나는 학급회장이다

 

2456번: 나는 학급회장이다

첫째 줄에는 반의 학생들의 수 N (3<=N<=1,000)이 주어진다. 다음 N개의 각 줄에는 각 학생이 제출한 회장후보 3명에 대한 선호 점수가 주어지는 데, 첫 번째 점수는 후보 1번에 대한 점수이고 두 번째 점수는 후보 2번에 대한 점수이고 세 번째 점수는 후보 3번에 대한 점수이다. 이 세 점수는 서로 다르며, 1, 2, 3이 정확히 한 번씩 나타난다. 

www.acmicpc.net

한국정보올림피아드시․도지역본선 > 지역본선 2011 > 초등부 2번

간단할 줄 알고 했는데 의외로 코드 길이가 길어지길래 놀랐습니다.

조건을 잘 맞추어 코딩하기만 하면 되는데 어떻게 하면 간단히 작성할 수 있을까를 생각하는데 집중했습니다.

일단 조건문이 중요하니 본문에서 언급된 조건들이 잘 처리되도록 if ~ else if 문을 적절히 사용했습니다.

 

그리고 맞긴 했지만 1133Byte라는 긴 코드가 나오더군요...

그래서 다른 분들이 푼 것 중 450Byte 근처로 나온 코드를 보니 대단하더군요.


그중 마음에 들었던 하나는 pair<int, int> p[3]으로 선언을 하고

p[i].first -> 입력받은 i번 후보의 선호도(1, 2, 3)를 모두 더하는 곳

p[i].second -> 입력받은 i번 후보의 선호도의 제곱을 모두 더하는 곳

 

처음에는 무슨 소리인가 싶었는데 생각해보니 .first 부분은 총합으로 쓰고, .second 부분은 개수의 우위로 사용을 하는 것이더군요.

이렇게 하면 간단한 알고리즘으로도 풀 수 있게 되었습니다.


다음번에는 저도 간단하면서도 유용한 알고리즘을 생각하여 풀 수 있도록 해야겠다고 다짐하게 만들어준 문제라고 생각합니다.

 

[소스 보기]

반응형