본문 바로가기

~2023

[JAVA/PYTHON3] 백준 7568번 문제 - 덩치 비교하기

728x90
반응형

<문제 링크>

 

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

 

7568번: 덩치

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

www.acmicpc.net

 


<풀이>

 

키와 몸무게를 비교해 순위를 정하는 문제이다.

순위를 정하는 기준은 덩치가 크고 작냐인데 A와 B가 가진 키와 몸무게를 비교해 두 개의  수치가 전부 커야 덩치가 크다고 할 수 있다.

그래서 키와 몸무게가 크면 순위가 높은 것이기 때문에 rank는 변하지 않으며, 키와 몸무게가 모두 작아야 순위가 낮아지기 때문에 rank++를 해준다.

 


<코드>

JAVA

weight: 키와 몸무게를 저장하는 배열

rank: 순위를 저장하는 배열


Python

people: 키, 몸무게, 순위가 저장되는 리스트


JAVA

import java.util.Scanner;

public class B7568 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt(); // n만큼 작동
		int[][] weight = new int [n][2]; // 덩치 저장
		int[] rank = new int [n];
		
		for(int i = 0; i < n; i++) { // 덩치 구하기
			int kg = sc.nextInt();
			int height = sc.nextInt();
			
			// input
			weight[i][0] = kg;
			weight[i][1] = height;
			rank[i] = 1; // 초기화
		}
		
		for(int i = 0; i < n; i++) { // 브루트포스 알고리즘
			for(int j = 0; j < n; j++) {
				if(i == j) { // 자기 자신과 비교 불가능
					continue;
				}
                
				// 키와 몸무게가 모두 커야 덩치가 큰 것임
				if(weight[i][0] < weight[j][0] && weight[i][1] < weight[j][1]) { // 덩치가 작으면 순위 밀림
					rank[i]++;
				}
			}
		}
		
		for(int i = 0; i < n; i++) {
			System.out.print(rank[i] + " ");
		}
		
		sc.close();
	}

}

Python

N = int(input()) # 사람 수

people = [ # 사람 정보 리스트
    { 'weight': 0, 'height': 0, 'rank': 1} for _ in range(N)
]

# input
for i in range(N):
    w, h = map(int, input().split())

    people[i]['weight'] = w
    people[i]['height'] = h

# compare
for i in range(N):
    for j in range(N):
        if people[i]['weight'] < people[j]['weight'] and people[i]['height'] < people[j]['height']:
            people[i]['rank'] += 1

# print
for _ in range(N):
    print(people[_]['rank'], end=" ")

 

 

 

 

 

 

728x90
반응형