알고리즘/구현 & 그리디 & 브루트포스

[백준]JAVA - 7568번: 덩치

K.두부 2023. 2. 7. 21:04
반응형

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

 

7568번: 덩치

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

www.acmicpc.net

풀이

브루트포스를 이용해서 푸는 문제다.

 

'각 사람의 덩치 등수는 몇 등인가?'

문제에서의 덩치가 큰 기준은 키와 몸무게가 모두 비교하는 대상보다 클 경우다.

 

키와 몸무게를 담을 수 있는 배열을 생성 후에 2중 for문을 이용해서 본인을 제외한 모두와 비교하여 rank 값을 출력해줬다.

문제에서 rank는 본인보다 덩치가 큰 사람 수 + 1 이기 때문에 rank 변수는 1로 초기화해주면 된다.

 

<최종코드>

import java.io.*;
import java.util.*;

public class Main {
    public static class Body {
        int w, h;
		
        public Body (int w, int h) {
            this.w = w;
            this.h = h;
        }
    }
	
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
		
        int N = Integer.parseInt(br.readLine()); // 인원
        Body[] body = new Body[N];
		
        for (int i=0; i<N; i++) {
            st = new StringTokenizer(br.readLine());
			
            int w = Integer.parseInt(st.nextToken());
            int h = Integer.parseInt(st.nextToken());
			
            body[i] = new Body(w, h);
        }
		
        int[] ans = new int[N];
		
        for (int i=0; i<N; i++) {
            int rank = 1;
            Body b = body[i];			

            for (int j=0; j<N; j++) {
                if (i == j) continue;
				
                if (b.w < body[j].w && b.h < body[j].h) {
                    rank++;
                }
            }
			
            ans[i] = rank;
        }
		
        for (int num : ans) {
            System.out.print(num + " ");
        }
    }
}
반응형