하루 한 접시
[백준] 1181번: 단어 정렬하기 [C#]
NaZZU
2024. 3. 20. 22:16
첫째 줄에는 반복 횟수. 둘째 줄부터는 단어가 입력된다.
단어는 중복을 제외해야 한다.
정렬은 1. 길이가 짧은 순서 -> 2. 알파벳 사전 순서대로 해야 한다.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
정렬은 순서를 거꾸로 뒤집어 알파벳 사전 순 정렬(문자열 정렬)을 먼저하고,
길이순 정렬( int 정렬)을 해주면 된다.
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
|
using System.IO;
using System.Text;
//using System.Linq;
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();
int N = int.Parse(reader.ReadLine());
string[] sArr = new string[N];
for(int i = 0; i < N; i++)
{
sArr[i] = reader.ReadLine().ToLower();
}
sArr = sArr.Distinct().ToArray();
Array.Sort(sArr);
sArr = sArr.OrderBy(a => a.Length).ToArray();
foreach (string res in sArr)
sb.Append(res + "\n");
print.WriteLine(sb);
}
}
}
|
cs |
처음에는 중복 문자열을 제거하는 메소드와 문자열을 길이 순서대로 정렬해주는 메소드를 몰라서 직접 구현을 했었는데,
계속 틀렸다.
.Distinct() 메소드는 리스트 혹은 배열에서 중복되는 값들을 제거 한 후 IEnumerable 요소들을 반환한다고 한다. ToList() 혹은 ToArray를 통해 원래의 형태로 변환시킬 수 있다고 한다.
.OrderBy 메소드는 람다 표현식을 인수로 받아 오름차순 정렬을 한 후 IEnumerable 로 반환한다고 한다.
이 두 메소드는 모두 System.Linq 네임스페이스에 속하기 때문에, using System.Linq를 적어 줘야 한다.