-

[BOJ - JAVA] 7568 - 덩치(브루트포스) 본문

백준 문제 풀이

[BOJ - JAVA] 7568 - 덩치(브루트포스)

흣차 2021. 10. 12. 23:59
728x90
반응형

# 주소

https://www.acmicpc.net/problem/7568

 

7568번: 덩치

우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩

www.acmicpc.net

 

# 문제

 

# 문제 해설 및 코드 리뷰

 

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int[] weight = new int[n];
        int[] tall = new int[n];
        for(int i = 0; i < n; i++) {
            weight[i] = scan.nextInt();
            tall[i] = scan.nextInt();
        }
        int rank;
        int[] dp = new int[n];
        for(int i = 0; i < n; i++){
            rank = 1;
            for(int j = 0; j < n; j++){
                if(weight[j] > weight[i] && tall[j] > tall[i]) {
                	rank++;
                }
            }
            dp[i] = rank;
        }
        for(int i = 0; i < n; i++)
            System.out.println(dp[i]);
    }
}

 

브루트포스 문제 중 가장 간단한 문제입니다.

일단 wieght와 tall 배열(각각 무게와 키)를 int타입으로 선언하고 Scanner를 통해 입력받습니다.

이후 rank의 값을 dp[]에 저장하며 각각의 등급을 측정하는 문제입니다.

 

브루트포스는 대부분 이중for문 또는 while을 사용해서 푸는 경우가 많으므로 숙지합니다.

rank는 for문이 한 번 끝날 때마다 1로 선언합니다.

그리고 해당 weight[i]와 tall[i]보다 큰 인덱스j값이 존재한다면 rank를 증가시킵니다.

그리고 rank를 dp의 해당 인덱스에 넣고 계속해서 for문을 실행합니다.

 

이 문제의 핵심은 무게와 키가 다를지라도 둘 다 크거나 둘 다 낮을때만 덩치의 등급이

나뉜다는 것을 숙지하고 있으면 해결할 수 있으실거라 생각합니다.

출력문도 정상적으로 출력되는 것을 확인할 수 있습니다.

감사합니다.

728x90
반응형
Comments