https://programmers.co.kr/learn/courses/30/lessons/85002
[문제]
- 전체 승률이 높은 복서의 번호가 앞쪽으로 갑니다. 아직 다른 복서랑 붙어본 적이 없는 복서의 승률은 0%로 취급합니다.
- 승률이 동일한 복서의 번호들 중에서는 자신보다 몸무게가 무거운 복서를 이긴 횟수가 많은 복서의 번호가 앞쪽으로 갑니다.
- 자신보다 무거운 복서를 이긴 횟수까지 동일한 복서의 번호들 중에서는 자기 몸무게가 무거운 복서의 번호가 앞쪽으로 갑니다.
- 자기 몸무게까지 동일한 복서의 번호들 중에서는 작은 번호가 앞쪽으로 갑니다.
주어진 조건에 따라 정렬을 하는 문제
[문제 풀이]
정렬을 하기위해 다양한 방법들이 있을 수 있지만 간단하게 Class에 Comparable을 Override 해서 비교함수를 구현함.
1. 승률에 따른 내림차순 > 2. 승률 동일 시 무거운 복서를 이긴 횟수 내림차순 > 3. 자기 몸무게 내림차순 > 4. 복서의 번호에 오름차순 으로 정렬 조건을 구현하여, List를 정렬할 수 있도록 한다.
승률이나 무거운 복서를 이긴 횟수 등을 구하는 법은 다양하게 있을 것 같다. (다른 사람의 풀이를 많이 보는 게 좋을 듯)
승률은 입력 시 head2head[i] 에서 일일히 W,L,N 을 charAt을 통해서 구분해서 횟수를 세어 승률과 자신보다 무거운 복서를 이긴 횟수를 구하도록 하였으며 Boxer List에 저장한 뒤 Collections.sort 를 통해 정렬 후 answer 배열에 출력하였다.
[문제 코드]
'알고리즘' 카테고리의 다른 글
소수 구하기 - Java (0) | 2021.09.29 |
---|---|
백준 1074번 : Z JAVA (0) | 2021.09.17 |
2022 KAKAO 카카오 블라인드 코딩테스트 1차 후기 (0) | 2021.09.13 |
kakao 블라인드 코딩테스트 1차 - 합승택시 JAVA (0) | 2021.09.07 |
kakao 기출(2021) - 순위 검색 JAVA (0) | 2021.09.07 |