프로그래밍/백준(BOJ)

[백준(BOJ) / C][Silver Ⅴ] 7568번 : 덩치

데굴데굴이 2024. 1. 1. 08:31
반응형

문제

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

 

7568번: 덩치

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

www.acmicpc.net


풀이

1. 데이터를 어떻게 관리해야할지.

2. 덩치들끼리 어떻게 비교를 해야할지

3. 순위를 어떻게 구별을 하고 덩치에게 순위를 넣을지


소스코드

#include <stdio.h>

// 데이터를 저장할 구조체
typedef struct struct_weight
{
	int kg;
	int height;
	int rank;
}WT;

int main(void)
{
	
	WT array[50];    // 덩치 데이터를 입력받을 구조체 배열
	int length = 0;  // 덩치 수
	
	scanf("%d", &length);
	
	// 덩치들의 (몸무게, 키)를 입력한다.
	for(int i =0; i < length; i++)
	{
		scanf("%d %d", &array[i].kg, &array[i].height);
	}
	 
	// 첫 번째 덩치부터 N번째 덩치까지 다른 덩치들과 비교한다.
	for(int i = 0; i < length; i++)
	{
		// 처음 순위는 1로 설정하고 다른 덩치들과 비교할때마다 나보다 
		// 몸무게, 키 둘다 높다면 순위가 높다는 뜻이기떄문에 + 1를 해준다.
		int rank = 1;
		for(int j = 0; j < length; j++)
		{
			if(array[i].kg < array[j].kg && array[i].height < array[j].height)
			{
				rank++;
			}
		}
		// 순위 설정이 끝나면 해당 구조체에 순위 값을 넣어준다.
		array[i].rank = rank;
	}
	
	// 순위를 출력한다.
	for(int i = 0; i < length; i++)
	{
		printf("%d ", array[i].rank);
	}
	
	return 0;
}
반응형