https://www.acmicpc.net/problem/7568
7568번: 덩치
우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩
www.acmicpc.net
문제
문제 풀이
- 브루트포스 알고리즘(Brute Force Algorithm)이란?
Brute Force 난폭한 힘을 의미한다. 모든 숫자를 다 넣어서 조합해 맞춰보는 알고리즘이다.
해당 문제의 경우, 한 사람의 키와 몸무게를 다른 모든 사람과 일일이 대조해보면 된다. - 푼 방법
1) 키와 몸무게를 담을 배열을 만든다.(2차원 배열로 만들어도 되지만, 그냥 1차원 배열 두 개로 했다.)
2) 경우의 수가 세 가지가 있다.
(1) 키와 몸무게가 다 큰 경우 : 등수는 고정된다.
(2) 키와 몸무게 중 하나는 크고 같고, 하나는 작거나 같은 경우 : 등수는 고정된다.
(3) 키와 몸무게가 다 작은 경우 : 등수가 떨어진다.
3) 경우의 수에 맞추어 구현하면 된다.
JAVA code
import java.io.*;
import java.util.StringTokenizer;
public class baekjoon7568 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] weight = new int[N];
int[] height = new int[N];
int[] rank = new int[N];
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int s1 = Integer.parseInt(st.nextToken());
int s2 = Integer.parseInt(st.nextToken());
weight[i] = s1;
height[i] = s2;
}
for (int i = 0; i < N; i++) {
int rankNumber = 1;
for (int j = 0; j < N; j++) {
// 경우의 수 1. 둘 다 더 큰 경우 rank stays
if (weight[i] > weight[j] && height[i] > height[j]) {
}
// 경우의 수 2. 둘 중 하나만 큰 경우 rank stays
else if ((weight[i] >= weight[j] && height[i] <= height[j])
|| (weight[i] <= weight[j] && height[i] >= height[j])) {
}
// 경우의 수 3. 둘 다 더 작은 경우 rank down
else {
rankNumber++;
}
}
rank[i] = rankNumber;
}
for (int i = 0; i < N; i++) {
System.out.print(rank[i] + " ");
}
}
}
'백준 문제풀이' 카테고리의 다른 글
[백준] 2751번 수 정렬하기 2 - 정렬(1) [JAVA] (0) | 2022.10.06 |
---|---|
[백준] 17478번 재귀함수가 뭔가요? - 재귀(5) [JAVA] (0) | 2022.09.29 |
[백준] 11729번 하노이 탑 이동순서 - 재귀(4) [JAVA] (1) | 2022.09.29 |
[백준] 2447번 별 찍기 10 - 재귀(3), 분할정복(1) [JAVA] (0) | 2022.09.28 |
[백준] 피보나치 수 5 - 재귀(2) [JAVA] (0) | 2022.09.27 |