occidere   4년 전

혼자서 각종 테스트케이스도 만들어보고, 대회 데이터도 넣어보고 했는데도 계속 오답처리가 되네요....

원래 한번 틀리기 시작하면 하염없이 틀리는게 알고리즘의 매력이긴 하지만 도저히 멘탈이 감당하기가 어려워서 이렇게 질문 남깁니다ㅠㅠ


우선 제가 수행한 과정은 아래와 같습니다.

  1. 국가 클래스를 만들어서 생성자를 통해 국가명, 금, 은, 동 을 저장합니다.
  2. 국가 클래스는 Comparable을 implements 하여 문제에서 요구한 비교방식대로 정렬하도록 구현되어있습니다.
  3. 이를 활용해 Arrays.sort로 정렬을 수행하며, 공동순위여부를 파악하기 위해 boolean 변수를 가지고 체크하였습니다.
  4. 정렬된 국가 배열을 반복문과 공동순위 boolean 변수를 이용해 순위를 전부 지정해주었습니다.
  5. 이후 맨 앞부터 순차탐색을 하여 k국을 찾아낸 뒤, k국의 순위를 출력하였습니다.

테스트 돌려보실 때 조금이나마 도움 되시라고  테스트용 출력부랑 toString() 오버라이딩 해놨습니다... 고수님들 도와주세요 ㅠㅠ

zlzmsrhak   4년 전

isCowinner 변수가 이해가 잘 되지 않습니다.

제가 이해하기로는 같은 등수가 여러개 있는 경우에 대해서는 가장 위만 False 값을 가지고 아래로는 모두 True 값을 가져야 하는 것 같은데,

그것을 compareTo 함수에서 처리하는건 매우 위험해 보입니다.

(Array.sort 함수가 Quick sort로 구현되어 있는 경우 같은 값을 가진 변수가 섞일 수 있습니다)

반복문을 따로 사용하여 isCowinner 변수의 값을 채우는 것이 좋아보입니다.

occidere   4년 전

답변감사합니다! 말씀해주신대로 고쳐보도록 하겠습니다!

occidere   4년 전

정말 감사합니다! Arrays.sort()가 퀵소트였다는 것을 잊고 있었네요 ㅎ...
답글 달아주신대로 순위 결정부분을 다시 수정해서 제출하니 AC받았습니다!

댓글을 작성하려면 로그인해야 합니다.