첫째 줄에는 몇명의 회원이 등록했는지 입력이 주어진다.
둘째 줄부터는 회원의 나이, 이름이 한 줄에 띄워쓰기로 구분되어 주어진다.
주어진 회원들을 나이 -> 회원 가입 순서대로 정렬하면 된다.
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
33
34
35
36
37
38
|
using System.IO;
using System.Text;
using System.Linq;
using System.Reflection.PortableExecutable;
namespace 연습장
{
internal class Program
{
static void Main(string[] args)
{
using var reader = new StreamReader(Console.OpenStandardInput());
using var print = new StreamWriter(Console.OpenStandardOutput());
StringBuilder sb = new StringBuilder();
List<Tuple<int, int, string>> list = new List<Tuple<int, int, string>>();
int N = int.Parse(Console.ReadLine());
string[] mem;
int count = 0;
for (int i = 0; i < N; i++)
{
count++;
mem = Console.ReadLine().Split();
list.Add(new Tuple<int, int, string>(int.Parse(mem[0]), count, mem[1]));
}
list.Sort();
foreach (Tuple<int, int, string> a in list)
sb.Append(a.Item1 + " " + a.Item3 + "\n");
Console.Write(sb);
}
}
}
|
cs |
주어진 입력은 나이, 이름 뿐이라 가입 순서를 간과할 수 도 있다.
실제로는 이름은 사실상 허수고, 나이와 가입 순서로 정렬을 하기 때문에, 보이지 않는 값인 등록 순서를 넣어주는 것이 핵심인 것 같다.
리스트에 튜플을 <int, int, string>(나이, 가입순서, 이름> 순으로 받아와서, 정렬을 해준다.
c#에서 지원하는 자동 정렬 메서드는 튜플에 입력된 아이템 순서대로 정렬을 해주기 때문에, 이름이 두번째 아이템으로 오게 된다면 예제에서 준규와 동현의 순서가 바뀌어서 출력 될 것이다.
또 하나 알아낸 점이 있는데, StreamWriter나 StreamReader를 사용 할 때에, 모든 입/출력을 통일하지 않으면 vs환경에서는 딱히 오류 없이 진행되나, 백준에서 검사할 때는 런타임 에러(Format) 이뜨게 되는 것 같다.
뭐든지 통일이 중요하다 싶다.
'하루 한 접시' 카테고리의 다른 글
[백준] 11651번: 좌표 정렬하기 2 [C#] (1) | 2024.03.23 |
---|---|
[백준] 25305번: 커트라인 [C#] (1) | 2024.03.23 |
[백준] 1427번: 소트인사이드 [C#] (0) | 2024.03.22 |
[백준] 2587번: 대표값2 [C#] (0) | 2024.03.21 |
[백준] 10817번: 세 수[C#] (0) | 2024.03.21 |