[ 문제 ]
현대 모비스는 모빌리티 SW 해커톤, 알고리즘 경진대회, 채용 연계형 SW 아카데미 등 다양한 SW 인재 발굴 프로그램을 진행하고 있다. 지난 2월에 개최된 모빌리티 SW 해커톤은 국내 14개 대학의 소프트웨어 동아리 20개 팀, 70여 명이 참여해 모빌리티 소프트웨어 개발 실력을 겨뤘다.
숭실대학교 컴퓨터학부 문제해결 소모임 SCCC 부원들은 매년 모빌리티 SW 해커톤, SCON, ICPC와 같은 팀 대회에서 사용할 팀명을 정하기 위해 많은 고민을 한다. 졸업을 한 학기 남겨둔 성서는 더 이상 부원들이 팀명으로 고통을 받지 않도록 가이드라인을 만들었다.
성서의 가이드라인에 따르면 팀 이름을 짓는 방법은 두 가지가 있다.
1. 세 참가자의 입학 연도를 100으로 나눈 나머지를 오름차순으로 정렬해서 이어 붙인 문자열
2. 세 참가자 중 성씨를 영문으로 표기했을 때의 첫 글자를 백준 온라인 저지에서 해결한 문제가 많은 사람부터 차례대로 나열한 문자열
예를 들어 600문제를 해결한 18학번 안(AHN)씨, 2000문제를 해결한 19학번 이(LEE)씨, 6000문제를 해결한 20학번 오(OH)씨로 구성된 팀을 생각해 보자. 첫 번째 방법으로 팀명을 만들면 181920이 되고, 두 번째 방법으로 팀명을 만들면 OLA가 된다.
2000문제를 해결한 19학번 이(LEE)씨, 9000문제를 21학번 나(NAH)씨, 1000문제를 해결한 22학번 박(PARK)씨로 구성된 팀은 첫 번째 방법으로 팀명을 만들면 192122가 되고, 두 번째 방법으로 팀명을 만들면 NLP가 된다.
세 팀원의 백준 온라인 저지에서 해결한 문제의 개수, 입학 연도, 그리고 성씨가 주어지면 첫 번째 방법과 두 번째 방법으로 만들어지는 팀명을 차례대로 출력하는 프로그램을 작성하라.
[ 코드 ]
StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
string[][] arr = new string[3][];
for (int i = 0; i < 3; i++)
{
string[] s = sr.ReadLine().Split();
string a = s[0];
int b = int.Parse(s[1]);
int b1 = b % 100;
string c = s[2];
char c1 = c[0];
arr[i] = new string[] { a, b1.ToString(), c1.ToString()};
}
var result1 = string.Join("", arr.OrderBy(x => x[1]).Select(x => x[1]));
var result2 = string.Join("", arr.OrderByDescending(x => int.Parse(x[0])).Select(x => x[2]));
sw.WriteLine(result1);
sw.Write(result2);
sw.Flush();
sr.Close();
sw.Close();
[ 실행화면 ]
문제링크: https://www.acmicpc.net/problem/28114
'Language > C#' 카테고리의 다른 글
[C#] 백준 10814번 나이순 정렬 (0) | 2024.02.23 |
---|---|
[C#] 백준 1100번 하얀 칸 (0) | 2024.02.23 |
[C#] 백준 1181번 단어 정렬 (1) | 2024.02.20 |
[C#] 백준 11650번 좌표 정렬하기 (0) | 2024.02.20 |
[C#] 백준 2587번 대표값2 (중앙값을 퀵 정렬 이용하여 풀기) (0) | 2024.02.19 |