본문 바로가기

algorithm/BOJ

백준 7568_덩치(C++)

 

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

 

7568번: 덩치

우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x,y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x,y), (p,q)라고 할 때 x>p 그리고 y>q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56,177), (45,165) 라고 한다면 A의 덩치가 B보다 큰

www.acmicpc.net

[문제 풀이]

문제의 해결법은 브루트 포스였던 것 같습니다.

단순 브루트 포스를 이용하여 풀었습니다.

반복문을 이용하여 자신보다 덩치가 큰(몸무게와 키가 둘 다 큰) 사람의 개수를 찾을 때마다 증가시켜주는 식으로 문제를 풀었습니다.

 

이 코드의 핵심은

v[i].first < v[j].first && v[i].second < v[j].second

입니다.

[코드]

#include<iostream>
#include<vector>

int N;

vector<pair<int, int>> v;

int main() {

	scanf("%d", &N);

	for (int i = 0; i < N; i++) {
		int a, b;
		scanf("%d %d", &a, &b);

		v.push_back(make_pair(a, b));
	}

	for (int i = 0; i < N; i++) {

		int count = 1;

		for (int j = 0; j < N; j++) {

			if (i == j)
				continue;

			if (v[i].first < v[j].first && v[i].second < v[j].second)
				count++;
		}

		printf("%d ", count);
		count = 1;
	}
}

 

 

 

 

 

ps) Sorting을 하여서 순차적으로 등수를 매기는 방법으로 문제를 풀어 보았지만 틀렸습니다. 혹시 어떤 부분이 틀린 건지 아시는 분은 댓글 남겨주시면 감사하겠습니다. 

 

#include<iostream>
#include<vector>
#include<tuple>
#include<algorithm>

using namespace std;

int N;
int grade[51];

vector<tuple<int, int, int>> person;


int main() {

	scanf("%d", &N);

	for (int i = 0; i < N; i++) {
		int a, b;
		scanf("%d %d", &a, &b);
		person.push_back(make_tuple(a, b, i));
	}

	sort(person.begin(), person.end(), greater<tuple<int,int, int>>());

	int level = 1, count = 1;

	for (int i = 0; i < person.size() - 1; i++) {

		if (get<0>(person[i]) > get<0>(person[i + 1]) && get<1>(person[i]) > get<1>(person[i + 1])) {
			grade[get<2>(person[i])] = level;
			level += count;
			count = 1;

			if (i == person.size() - 2)
				grade[get<2>(person[i + 1])] = level;
		}
		else {
			grade[get<2>(person[i])] = level;
			count++;
			
			if (i == person.size() - 2)
				grade[get<2>(person[i + 1])] = level;
		}
	}

	for (int i = 0; i < N; i++)
		printf("%d ", grade[i]);

	return 0;

}

'algorithm > BOJ' 카테고리의 다른 글

백준 3190_뱀(C++)  (0) 2020.04.08
백준 2748_피보나치 수 2(C++)  (0) 2020.04.03
백준 11729_하노이 탑 이동 순서(C++)  (4) 2020.04.01
백준 14888_연산자 끼워넣기(C++)  (2) 2020.03.28
백준 13458_시험감독(C++)  (3) 2020.03.27