https://www.acmicpc.net/problem/7568
백준 7568번 덩치 문제 링크입니다.
핵심
우선 입력 값은
5
55 185
58 183
88 186
60 175
46 155
이다. 출력은 2 2 1 2 5이다. 이는 키와 몸무게가 다른 사람에 비해 크면 더 덩치가 크고 키나 몸무게 둘 중 1가지만 크면 같은 덩치이고, 둘 다 작으면 덩치가 더 작은 것이다. 이문제는 브루트 포스에 분류된 것처럼 반복해서 비교하는 것이다.
정답 코드
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int arr[][] = new int[n][2];
int rank[] = new int[n];
for (int i = 0; i < n; i++) {
arr[i][0] = sc.nextInt();
arr[i][1] = sc.nextInt();
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if(arr[i][0] < arr[j][0] && arr[i][1] < arr[j][1])
rank[i]++;
}
}
for (int i = 0; i < n; i++) {
System.out.print(rank[i]+1+" ");
}
}
}
해설
키와 몸무게를 저장할 2차원 배열을 선언하고 배열에 키와 몸무게를 넣는다.
반복 비교문은 자신보다 덩치가 큰사람이 있을 경우마다 +1을 해주는 것인데,
i=0일 때를 보면, 55kg에 185cm이다. 그다음 사람은 58kg, 183cm이므로 몸무게는 더 많이 나가지만,
키가 더 작으므로 같은 덩치이다. 그다음 사람은 88kg, 186cm이므로 키와 몸무게가 더 높다. 따라서 +1을 해준다.
모든 비교가 끝나면 rank 배열은 자신보다 덩치가 큰사람의 수가 저장되어있다.
1 1 0 1 4가 된다. 따라서 출력 시 +1을 해주면 우리가 원하는 덩치 등수를 얻을 수 있다.
개선점이나 오류가 있다면, 댓글 부탁드립니다.
'PS > 알고리즘 문제풀이' 카테고리의 다른 글
[백준]1002번 터렛(java) (0) | 2022.07.13 |
---|---|
[백준]2477번 참외밭(java) (0) | 2022.07.13 |
[백준]2981번 검문(java) (0) | 2022.07.11 |
[백준]10816번 숫자 카드2(java) (0) | 2022.07.10 |
[백준]10815번 숫자 카드(java) (0) | 2022.07.08 |