본문 바로가기

CS ﹒ Algorithm/Baekjoon

JAVA 백준 문제풀이 (20) 7568: 덩치

 

 

 

브루트포스 알고리즘 문제이기 때문에 크게 머리 싸맬 일은 없다.

그냥 문제를 잘 읽고 그대로 코드로 구현하려고 하면 된다.

 

이 문제 속 세상은 아주 편견이 없기 때문에 (58, 183)인 사람과 (60, 175)인 사람의 덩치 등수를 같다고 해준다.

키는 앞사람이 8cm나 크지만 몸무게가 2kg 적게 나가기 때문이다.

 

즉, 내가 누군가와 비교했을 때 나의 등수가 낮아지려면 키와 몸무게가 모두 상대보다 작아야 한다.

더 어렵게 설명할 것도 없다. 너무 쉬운 문제니까 바로 코드로 넘어가자.

 

꼭 BufferedReader를 사용해야하는 것은 아니지만 시간 초과 나왔을 때 Scanner 일일히 바꿔주고 있으면 스트레스 받기 때문에 어지간하면 그냥 BufferedReader를 쓰자..

 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine()); // 테스트 횟수
        int[] height = new int[T]; // 몸무게
        int[] weight = new int[T]; // 키
        int[] rating = new int[T]; // 등수

        for(int i=0; i<T; i++) { // 테스트 횟수만큼 반복적으로 입력 받음
            String[] bulkInput = br.readLine().split(" ");
            height[i] = Integer.parseInt(bulkInput[0]);
            weight[i] = Integer.parseInt(bulkInput[1]);
        }

        for(int i=0; i<T; i++) {
            rating[i] = 1; // 기본 등수는 1에서 시작
            for(int j=0; j<T; j++) {
                if ( height[i] < height[j] && weight[i] < weight[j] ) {
                    rating[i]++; // 만약 비교 대상이 몸무게, 키 모두 나보다 크다면 등수 ++
                }
            }
        }

        for (int result : rating) {
            System.out.printf(result+" "); // 결과 출력
        }
    }
}

 

 

좋아좋아.