반응형
각 사람들의 키와 몸무게를 입력받고 등수를 매기는 문제이다.
먼저 각 사람들의 키와 몸무게를 저장할 2차원 배열 a를 만들어 몸무게와 키를 입력받는다.
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] a = new int[n][2];
int[] b = new int[n];
for (int i = 0; i < n; i++) {
a[i][0] = sc.nextInt();
a[i][1] = sc.nextInt();
b[i] = 1;
}
a[i][0] 은 몸무게, a[i][1]은 키를 입력받도록 했다.
b 배열은 등수를 저장할 배열이므로 1로 초기화 시켜주었다.
위 조건에는 키와 몸무게가 더 많이 나간다면 덩치가 크다고 했다.
이 덩치를 이용하여 어떤사람 A보다 덩치가 큰 사람을 구하여 덩치가 큰 사람이 적은 순서대로 덩치 등수를 매기면 된다.
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (a[i][0] < a[j][0] && a[i][1] < a[j][1]) {
b[i]++;
}
}
}
이 문제는 선택정렬 문제와는 달리 첫번째 사람부터 마지막 사람까지 한명씩 일일히 비교해 봐야 하므로
이중 for문 모두 초기값을 0으로 주었다.
i 번째의 사람이 j 번째의 사람보다 키와 몸무게가 작다면 b[i] (등수)를 하나 증가시킨다.
이를 반복하면 덩치가 큰 사람이 많을수록 b[i] (등수)가 커지므로 자연히 적은사람 순으로 등수를 매길 수 있다.
전체 코드를 보면 다음과 같다.
import java.util.Scanner;
public class Back7568 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] a = new int[n][2];
int[] b = new int[n];
for (int i = 0; i < n; i++) {
a[i][0] = sc.nextInt();
a[i][1] = sc.nextInt();
b[i] = 1;
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (a[i][0] < a[j][0] && a[i][1] < a[j][1]) {
b[i]++;
}
}
}
for (int i = 0; i < n; i++) {
System.out.print(b[i] + " ");
}
}
}
반응형
'Java > 백준알고리즘' 카테고리의 다른 글
[Java] 백준알고리즘 #2750 수 정렬하기 (0) | 2021.03.17 |
---|---|
[Java] 백준알고리즘 #1018 체스판 다시 칠하기 (0) | 2021.03.16 |
[Java] 백준알고리즘 #2231 분해합 (0) | 2021.03.15 |
[Java] 백준알고리즘 #2798 블랙잭 (0) | 2021.03.15 |
[Java] 백준알고리즘 #1002 터렛 (0) | 2021.03.11 |