자바 7568

문제
키와 몸무게를 두 가지 값으로 표현하여 순위를 매기려고 합니다. 사람의 몸무게가 x kg이고 키가 y cm이면 사람의 키는 (x,y)로 표시됩니다. 두 사람 A와 B가 각각 (x,y)와 (p,q)를 가지고 있다고 가정하고 x > p이고 y > q이면 A의 크기가 B보다 “더 크다”고 합니다. 사람 A와 B가 각각 (56, 177)과 (45, 165)이면 A의 키가 B보다 클 것입니다. 예를 들어 두 사람 C와 D의 키가 각각 (45, 181)과 (55, 173)이라면 D는 C보다 무겁고 C보다 크므로 C와 D가 크다고 말할 수는 없습니다. 다른 .
N명의 그룹에서 각 사람의 크기 순위는 자신보다 “큰” 사람의 수로 결정됩니다. 당신보다 키가 큰 k명이 있다면 그 사람의 순위는 k+1입니다. 이렇게 순위를 결정하면 여러 개인이 같은 크기의 순위를 가질 수 있습니다.
기입
전체 인원수 N은 첫 번째 라인에 주어진다. 그런 다음 다음 N 행에 각 사람의 체중과 키를 나타내는 양의 정수 x와 y가 사이에 하나의 공백으로 나타납니다.
누르다
입력에 나열된 사람들의 키 순위를 가져와 첫 번째 줄에 순서대로 인쇄해야 합니다. 그러나 각 크기 순위는 공백으로 구분해야 합니다.
문제를 해결하다
N명의 몸무게와 키를 비교하여 순위를 매기는 프로그램입니다.
몸무게와 키가 모두 키가 큰 경우에만 사람을 키가 크다고 부를 수 있습니다. 무게만 크고 크기가 작은 경우 조건이 충족되지 않습니다.
public class Main {
public static void main(String() args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine()); // N명의 수
int()() arr = new int(N)(2); // 2차원 배열 생성
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
arr(i)(0) = Integer.parseInt(st.nextToken()); // 몸무게
arr(i)(1) = Integer.parseInt(st.nextToken()); // 키
}
for (int i = 0; i < N; i++) {
int rank = 1; // 순위 매기기
for (int j = 0; j < N; j++) {
if (arr(i)(0) == arr(j)(0)) continue; // 몸무게가 같다면, for문 continue
if (arr(i)(0) < arr(j)(0) && arr(i)(1) < arr(j)(1)) // 다른 사람보다 몸무게가 많고 키가 크다면?
rank++; // rank 증가
}
sb.append(rank).append(" ");
}
System.out.println(sb); // 출력하기
}
}
1) 2차원 배열을 만들고 N명의 몸무게와 키를 하나씩 저장합니다. 그런 다음 저장된 값을 double for 문과 비교합니다.
2) for 문에서 0번째 사람이 1번째 사람보다 크면 rank 변수가 증가합니다.
0번째 사람은 1번째 사람과 N번째 사람을 비교하고 비교 후 0번째 사람의 순위를 StringBuilder에 저장합니다.
3) 0~N번째 사람까지 모든 비교가 완료되면 저장된 StringBuilder가 덤프됩니다.

https://www.acmicpc.net/problem/7568
7568:대형
키와 몸무게를 두 가지 값으로 표현하여 순위를 매기려고 합니다. 사람의 몸무게가 x kg이고 키가 y cm이면 사람의 키는 (x,y)로 표시됩니다. A와 B 두 사람의 뎅
www.acmicpc.net

