[ 문제 ]
https://www.acmicpc.net/problem/7568
[ 제출코드 ]
[ 풀이 ]
1. {위치, 몸무게, 키, 순위}를 담을 수 있는 Person 클래스를 만듭니다.
2. 몸무게를 기준으로 오름차순으로 정렬합니다.
3. 반복문으로 비교하면서, 현재 비교 대상인 사람보다 키와 몸무게 모두 큰 사람의 수만큼 순위에 더해줍니다.
4. 위치에 맞게 정답을 출력합니다.
예를 들어서, 입력이 다음과 같다고 가정해 봅시다.
6
55 181
54 181
56 181
55 179
56 182
54 190
위의 입력은 2번에 의해 다음과 같이 정렬할 수 있습니다.
6, 54 190
2, 54 181
4, 55 179
1, 55 181
5, 56 182
3, 56 181
여기서 주의할 점은 6번과 2번 중 키는 6번이 더 크지만 몸무게가 54로 같기 때문에 누가 덩치가 더 크다고 비교할 수 없습니다. 따라서 6번이 2번보다 덩치가 더 크다고 할 수 없습니다.
6번 보다 덩치가 큰 사람은 없기 때문에 6번의 순위는 1 입니다.
다음으로, 2번보다 덩치가 큰 사람은 한 명(5번) 밖에 없으므로 2번의 순위는 2 입니다.
이런 식으로 풀면 됩니다.
[ 이야기 ]
java8 이후부터 사용이 가능한 StringJoiner를 사용해봤습니다.
int 배열의 값들을 공백으로 구분해서 출력하기 위해 StringJoiner를 사용하게 되었습니다.
다시 말하자면, "[2, 1, 2, 4]"를 "2 1 2 4"로 출력하기 위함이었습니다.
'Algorithm 문제풀기 > Baekjoon' 카테고리의 다른 글
[JAVA] 구간 합 구하기 5 ::: DP, 누적 합 (0) | 2024.05.31 |
---|---|
[JAVA] 구간 합 구하기 4 ::: 누적합 (0) | 2024.05.29 |
[JAVA] 부녀회장이 될테야 ::: DP (0) | 2024.04.15 |
[JAVA] 섬의 개수 ::: BFS (0) | 2024.04.08 |
[JAVA] 나이트의 이동 ::: BFS (0) | 2024.04.04 |