[백준 28114] 팀명 정하기 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
세 팀원의 입학 연도, 해결 문제 수, 성씨가 주어질 때, 두 가지 방식으로 팀명을 만드는 문제입니다.
첫 번째는 연도의 뒤 두 자리를 오름차순으로 이어붙인 문자열입니다.
두 번째는 해결 문제 수가 많은 순으로 성씨의 첫 글자를 이어붙인 문자열입니다.
접근법
먼저 세 팀원의 정보를 저장합니다.
이후 연도 기준 오름차순으로 정렬하여 첫 번째 팀명을 출력합니다.
다음으로 해결 문제 수 기준 내림차순으로 정렬하여 두 번째 팀명을 출력합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
using System.Collections.Generic;
class Program {
struct Member {
public int solved;
public int year;
public string surname;
}
static void Main() {
var team = new List<Member>(3);
for (var i = 0; i < 3; i++) {
var p = Console.ReadLine()!.Split();
team.Add(new Member {
solved = int.Parse(p[0]),
year = int.Parse(p[1]) % 100,
surname = p[2]
});
}
team.Sort((a, b) => a.year.CompareTo(b.year));
foreach (var m in team) Console.Write(m.year.ToString("D2"));
Console.WriteLine();
team.Sort((a, b) => b.solved.CompareTo(a.solved));
foreach (var m in team) Console.Write(m.surname[0]);
Console.WriteLine();
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <bits/stdc++.h>
using namespace std;
struct Member {
int solved, year;
string surname;
};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
vector<Member> team(3);
for (int i = 0; i < 3; i++) {
cin >> team[i].solved >> team[i].year >> team[i].surname;
team[i].year %= 100;
}
sort(team.begin(), team.end(), [](const Member& a, const Member& b) {
return a.year < b.year;
});
for (auto &m : team) cout << setw(2) << setfill('0') << m.year;
cout << "\n";
sort(team.begin(), team.end(), [](const Member& a, const Member& b) {
return a.solved > b.solved;
});
for (auto &m : team) cout << m.surname[0];
cout << "\n";
return 0;
}