c++/학교 문제 풀이

c++ 문제 풀이 - 객체의 정렬 1

psb08 2025. 4. 24. 07:55
728x90
반응형

 


 

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;

class Student
{
	public:string FirstName;
	public:string Class;
	public:string Area;
};

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	std::cout.tie(NULL);
    
    	int num;
	cin >> num;
	vector<Student> arr(num);

	for (int i = 0; i < num; i++)
	{
		cin >> arr[i].FirstName >> arr[i].Class >> arr[i].Area;
	}

	string latestFirstName = arr[0].FirstName;
	string latestClass = arr[0].Class;
	string latestArea = arr[0].Area;

	for (int i = 0; i < num; i++)
	{
		if (arr[i].FirstName > latestFirstName)
		{
			latestFirstName = arr[i].FirstName;
			latestClass = arr[i].Class;
			latestArea = arr[i].Area;
		}
	}

	cout << "name : " << latestFirstName << endl;
	cout << "addr : " << latestClass << endl;
	cout << "city : " << latestArea << endl;

}

 


 

먼저 Student 클래스를 정의합니다.

class Student
{
	public:string FirstName;
	public:string Class;
	public:string Area;
};

 

 

그 다음으로 메인 함수를 정의합니다.

몇 번 입력 받을지 num 변수를 정의하고, 입력 받습니다.

vector<Student> arr(num)을 사용해 학생 정보를 저장할 동적 배열을 생성합니다.

int num;
cin >> num;
vector<Student> arr(num);

 

 

for 루프를 통해 FirstName, Class, Area 정보를 입력받아 각각의 Student 객체에 저장합니다.

for (int i = 0; i < num; i++)
{
	cin >> arr[i].FirstName >> arr[i].Class >> arr[i].Area;
}

 

 

latestFirstName, latestClass, latestArea 변수를 초기화한 후, 

for 루프를 통해 FirstName의 사전순 비교를 통해 가장 느린 이름을 찾습니다.

string latestFirstName = arr[0].FirstName;
string latestClass = arr[0].Class;
string latestArea = arr[0].Area;

for (int i = 0; i < num; i++)
{
	if (arr[i].FirstName > latestFirstName)
	{
		latestFirstName = arr[i].FirstName;
		latestClass = arr[i].Class;
		latestArea = arr[i].Area;
	}
}

 

 

마지막으로 출력합니다.

cout << "name : " << latestFirstName << endl;
cout << "addr : " << latestClass << endl;
cout << "city : " << latestArea << endl;

 

출력 예시