[백준] 7568번 덩치 / C++

#문제

백준 7568번 덩치

#풀이

#include <iostream>
#include <vector>

using namespace std;

int main()
{
	ios::sync_with_stdio(false); cin.tie(NULL);

	int N;
	cin >> N;

	vector<pair<pair<int, int>, int>> students;

	for (int i = 0; i < N; ++i)
	{
		int weight, height;
		cin >> weight >> height;

		students.push_back(make_pair(make_pair(weight, height), 0));
	}

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

		for (int j = 0; j < N; ++j)
		{
			if (students[i].first.first < students[j].first.first && students[i].first.second < students[j].first.second)
			{
				k++;
			}
		}

		students[i].second = k;
	}

	for (int i = 0; i < N; ++i)
	{
		cout << students[i].second << ' ';
	}

	return 0;
}

#정리

학생들의 몸무게와 키, 등수를 받을 수 있는 vector를 하나 만들고, 몸무게와 키는 입력받은 숫자로, 등수는 0으로 초기화하였다. 그리고 입력받은 몸무게와 키를 토대로 비교를 진행했다. 처음에는 비교 대상이 더 클 경우 등수를 높이는 방법을 생각하며 진행했는데, 몸무게와 키 모두 큰 경우를 제외하곤 등수의 변화가 없음을 인지하고 반대로 1부터 상대방이 클 경우 등수를 올리는 방식으로 변경하여 해결했다.




    Enjoy Reading This Article?

    Here are some more articles you might like to read next:

  • [백준] 1037번 최소공배수 / C++
  • [백준] 1934번 최소공배수 / C++
  • [백준] 1010번 다리 놓기 / C++
  • [백준] 2563번 색종이 / C++
  • [백준] 9613번 GCD 합 / C++