https://www.acmicpc.net/problem/10814
문제 해결 과정
착안
가입한 사람들의 정보를 구조체를 활용해 저장한 뒤 이를 배열로 저장하여 정렬하고자 하였다. 나이가 같은 경우, 가입한 순으로 정렬하기 위해 별도로 가입한 순서를 표시하기 위한 변수를 구조체에 포함하였다.
구현
STL의 <algorithm> 헤더에 포함된 std::sort() 함수를 사용하고, 정렬하는 기준을 람다 표현식(lambda expression)의 형태로 전달하여 구현하였다.
[스포 주의] 아래 '더보기'를 누르면 코드가 나오니 주의하세요~
더보기
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
struct Member
{
string Name;
int Age;
int Index;
};
Member Members[100000];
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int N;
cin >> N;
for (int i = 0; i < N; i++)
{
Members[i].Index = i;
cin >> Members[i].Age >> Members[i].Name;
}
sort(&Members[0], &Members[N - 1] + 1,
[](const Member& A, const Member& B)
{
if (A.Age == B.Age)
return A.Index < B.Index;
return A.Age < B.Age;
});
for (int i = 0; i < N; i++)
cout << Members[i].Age << " " << Members[i].Name << "\n";
return 0;
}
실행 결과
'C++ 코딩 문제 풀이 > 백준' 카테고리의 다른 글
[Baekjoon] 2805번: 나무 자르기 (0) | 2023.06.27 |
---|---|
[Baekjoon] 1654번: 랜선 자르기 (0) | 2023.06.27 |
[Baekjoon] 1021번: 회전하는 큐 (0) | 2023.06.25 |
[Baekjoon] 10816번: 숫자 카드 2 (0) | 2023.06.25 |
[Baekjoon] 2331번: 반복수열 (0) | 2023.06.22 |
댓글