백준 7568번

신형석·2022년 3월 23일
0

알고리즘 풀이

목록 보기
23/41

백준 7568번은 몸무게와 키가 모두 커야 덩치가 크다고 말할 수 있다는 조건을 가지고 있다. 이는 조건문을 사용할 때 &&를 이용하여 등수를 정해야 한다는 것을 알 수 있다.

이 문제는 브루트포스 알고리즘(Brute Force Algorithm)으로 분류되어 있는데, 이 알고리즘의 특징은 이 전 포스팅에서 다룬 탐욕 알고리즘과 달리, 무조건적으로 최적해를 도출해낸다는 점이다. 이름에서부터 무식한(Brute) 힘(Force)가 들어가 있다. 모든 자료를 탐색하고 도출해내는 답이기 때문에, 무조건적으로 최적해를 도출해낼 수밖에 없다.

이 코드를 짜기 전에, 브루트포스 알고리즘인지 모르고 계속 정렬 알고리즘처럼 처음 비교한 자료는 비교하지 않고 넘어가버렸다. 그 점에 주의하도록 하자.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
	int num;
	scanf("%d", &num);
	int* weight = (int*)malloc(sizeof(int) * num);
	int* height = (int*)malloc(sizeof(int) * num);
	for (int i = 0; i < num; i++) {
		scanf("%d %d", &weight[i], &height[i]);
	}
	for (int i = 0; i < num; i++) {
		int cur_weight = weight[i];
		int cur_height = height[i];
		int people = 0;
		for (int j = 0; j < num; j++) {
			if (cur_weight < weight[j] && cur_height < height[j]) {
				people++;
			}
		}
		printf("%d ", people + 1);
	}
	free(weight);
	free(height);
}

0개의 댓글