문제 내용은 입력으로 사람 수와, 몸무게 키를 받은 뒤 입력받은 사람 순으로 해당 사람의 덩치가 몇 위인지 출력해야 하는데, 몸무게/키 모두 다른 사람보다 커야 덩치가 더 큰 것이고 키는 큰데 몸무게는 작거나 그 반대의 경우에는 덩치가 동일하다고 보면 되겠다
그리고 출력 시 주의할 점은 몸무게와 키가 한 쪽만 커서 덩치가 동일한 경우에는 동일한 순위를 출력하되 그 다음 순위부터는 1씩 증가하는 게 아니라, 동일한 순위였던 사람 수를 모두 더해 증가시켜야 하는데 숫자로 보면 1 2 2 2 5 이런 식이 되겠다
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
int[][] arr = new int[count][2];
for (int i = 0; i < count; i++) {
int[] chunkyArr = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt)
.toArray();
arr[i][0] = chunkyArr[0];
arr[i][1] = chunkyArr[1];
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
int compare = 1;
for (int j = 0; j < arr.length; j++) {
if (i != j) {
if (arr[i][0] < arr[j][0] && arr[i][1] < arr[j][1]) {
compare++;
}
}
}
sb.append(compare).append(" ");
}
System.out.println(sb.substring(0, sb.length() - 1));
}
}
문제를 풀어보자면 순위 잡는 방법을 모르면 난감할 수 있는데, 일단 입력으로 받은 몸무게와 키를 모두 배열에 넣어준 뒤 반복문 두 번 돌리면서, 다른 사람들과 비교해주면서 키와 몸무게 둘 다 작을 경우에만 1씩 늘려주면, 반복문 돌려서 금새 순위를 찾아줄 수 있고 이후에는 양식에 맞게 출력해주기만 하면 끝이다.
풀이 방법을 알면 간단하지만 모를 경우에는 참 난감하지 않을 수 없다.
Leave a Reply