백준 문제풀이

[백준] 7568번 덩치 - 브루트 포스(1) [JAVA]

늦깍이 2022. 10. 4. 14:00

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] + " ");
        }
    }
}