알고리즘/브루트포스
[자바]백준 7568번 덩치[브루트포스][엄탱]
엄탱
2023. 3. 10. 23:14
728x90
문제 링크
https://www.acmicpc.net/problem/7568
7568번: 덩치
우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩
www.acmicpc.net
문제 설명
몸무게와 키가 주어지는 N명 집단에서 각 사람마다 등치의 등수를 출력하면 된다.
단, 몸무게와 키 둘 다 커야지만 등치가 큰 것이며 등수가 높은 것이다(1에 가까울수록 높다)
해설
해당 문제는 알고리즘 분류가 브루트포스이며, 최대 50명 이기 때문에 이중 for문을 사용해도 최대 경우의 수가 2500번 이기 때문에 완전탐색을 사용해도 좋을 것 같다.
완전탐색을 한명 한 명 진행하면 되고 이중 for문을 사용해서 등수를 알고 싶은 사람을 다른 사람과 비교해서 등치가 작으면 등수를 +1 씩 해주고 아니라면 그냥 지나가면 된다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[][] arr = new int[N][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++) {
// i와 j가 같으면 같은 사람이기 때문에 넘어가기
if (i == j) {
continue;
}
// 등수를 알고 싶은 사람이 비교하는 사람보다
// 키, 몸무게 둘 다 작으면 rank를 +1 해주기
if (arr[i][0] < arr[j][0] && arr[i][1] < arr[j][1]) {
rank++;
}
}
System.out.print(rank + " ");
}
br.close();
}
}
728x90