백준/7568/brute force/덩치

유기태·2022년 5월 18일
0

백준/7568/brute force/덩치
우선 개개인의 인적사항을 담을 person클래스를 정의하였고
멤버 변수로 weight,height,rank 변수를 선언하였습니다.
그 다음 person 클래스 배열을 동적할당하여 각각의 데이터를 넣어주고
생성자를 정의하여 처음에는 rank가 1위에게 만들었습니다.

for (int i = 0; i < N; i++)
		for (int j = 0; j < N; j++) {
			if (i == j)
				continue;
			else {
				if ((temp[i].getH() < temp[j].getH())&&(temp[i].getW()<temp[j].getW()))
					temp[i].rankup();
			}
		}

상기에 for문을 통해 자신을 제외하고 다른 사람들과 비교하면서 rankup하게 만들었습니다.
rank는 class의 멤버 변수로 정보은닉을 위반하지 않게 rankup 멤버 함수를 만들어 증가하게끔 하였습니다.

답을 출력하는 for문에 대해서 다음과 같이 표기 했을때 출력 오류가 발생하였습니다.

	for (int i = 0; i < N; i++) {
		cout << temp[i].getR()<<" ";
	}

마지막에 표기되는 등수의 공백이 문제라 판단하여 이와 같이 수정하였습니다.

	for (int i = 0; i < N; i++) {
		if (i + 1 == N) {
			cout << temp[i].getR();
		}
		else {
			cout << temp[i].getR()<<" ";
		}
	}

풀이

1.첫번째 풀이

#include<iostream>
using namespace std;

class person {
private:
	int height;
	int weight;
	int rank;
public:
	person();
	person(int, int);
	int getH() const{ return height; }
	int getW() const { return weight; }
	int getR() const { return rank; }
	void rankup() { rank++; }
};

person::person() :height(0), weight(0),rank(0) {};
person::person(int h, int w) :height(h), weight(w),rank(1) {};

int main(void) {
	int N;
	cin >> N;
	person temp1;
	person* temp = new person[N];
	int w;
	int h;
	for (int i = 0; i < N; i++) {
		cin >> w >> h;
		temp[i] = person(w, h);
	}
	
	for (int i = 0; i < N; i++)
		for (int j = 0; j < N; j++) {
			if (i == j)
				continue;
			else {
				if ((temp[i].getH() < temp[j].getH())&&(temp[i].getW()<temp[j].getW()))
					temp[i].rankup();
			}
		}

	for (int i = 0; i < N; i++) {
		cout << temp[i].getR()<<" ";
	}

	delete[] temp;
}

2.두번째 풀이

#include<iostream>
using namespace std;

class person {
private:
	int height;
	int weight;
	int rank;
public:
	person();
	person(int, int);
	int getH() const{ return height; }
	int getW() const { return weight; }
	int getR() const { return rank; }
	void rankup() { rank++; }
};

person::person() :height(0), weight(0),rank(0) {};
person::person(int h, int w) :height(h), weight(w),rank(1) {};

int main(void) {
	int N;
	cin >> N;
	person temp1;
	person* temp = new person[N];
	int w;
	int h;
	for (int i = 0; i < N; i++) {
		cin >> w >> h;
		temp[i] = person(w, h);
	}
	
	for (int i = 0; i < N; i++)
		for (int j = 0; j < N; j++) {
			if (i == j)
				continue;
			else {
				if ((temp[i].getH() < temp[j].getH())&&(temp[i].getW()<temp[j].getW()))
					temp[i].rankup();
			}
		}

	for (int i = 0; i < N; i++) {
		if (i + 1 == N) {
			cout << temp[i].getR();
		}
		else {
			cout << temp[i].getR()<<" ";
		}
	}

	delete[] temp;
}
profile
게임프로그래머 지망!

0개의 댓글