반응형
한국정보올림피아드시․도지역본선 > 지역본선 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 부분은 개수의 우위로 사용을 하는 것이더군요.
이렇게 하면 간단한 알고리즘으로도 풀 수 있게 되었습니다.
다음번에는 저도 간단하면서도 유용한 알고리즘을 생각하여 풀 수 있도록 해야겠다고 다짐하게 만들어준 문제라고 생각합니다.
반응형