복대가리의 개발

[C#] 백준 (알고리즘)/브론즈 문제

[백준 - C#] 2204 도비의 난독증 테스트

복대가리 2022. 7. 16. 00:17
728x90

문제링크

https://www.acmicpc.net/problem/2204

 

2204번: 도비의 난독증 테스트

꿍은 도비에게 영어단어들을 제시한 후 어떤 단어가 대소문자를 구분하지 않고 사전순으로 가장 앞서는지 맞추면 양말을 주어 자유를 얻게해준다고 하였다. 하지만 인성이 좋지 않은 꿍은 사실

www.acmicpc.net

문제

꿍은 도비에게 영어단어들을 제시한 후 어떤 단어가 대소문자를 구분하지 않고 사전순으로 가장 앞서는지 맞추면 양말을 주어 자유를 얻게해준다고 하였다.
하지만 인성이 좋지 않은 꿍은 사실 그러고 싶지 않았기 때문에 대소문자를 마구 섞어가며 단어들을 제시했다. 예를 들어, apPle은 Bat보다 앞서지만 AnT보다는 뒤에 있는 단어다.
도비에게 희망은 여러분뿐이다! 여러분이 도비에게 자유를 선물해주도록 하자!

조건

시간제한 : 1초
메모리 제한 : 128 MB

입력

각 테스트케이스는 정수 n (2 ≤ n ≤ 1000) 으로 시작하며 주어지는 단어의 개수를 뜻한다.

다음 각 n줄은 길이가 최대 20인 단어가 주어지며 대소문자의 구분을 없앴을 때 똑같은 단어는 주어지지 않는다.

마지막 입력은 0이 주어진다.

출력

각 줄에 각 테스트케이스에서 사전상 가장 앞서는 단어를 출력한다.

 

문제풀이

이번 문제는 문자열을 정렬하는 문제입니다. 

대문자와 소문자를 구분하지않고 제일 앞에 오는 문자열을 출력해주는 것인데, 간단하게 List에 모든 단어를 입력 받고 Sort를 할 때 입력받은 단어들을 대문자로 변경하여 비교하였습니다. 

 

List의 Sort와 string의 ToUpper, CompareTo 메소드를 이용하여 해결 하였습니다.

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
static void Main(string[] args)
{
    StreamWriter writer = new StreamWriter(Console.OpenStandardOutput());
    StreamReader reader = new StreamReader(Console.OpenStandardInput());
 
    List<string> input = new List<string>();
    while (true)
    {
        int n = int.Parse(reader.ReadLine()); // 단어의 개수
 
        // 마지막 입력 확인
        if (n == 0)
            break;
 
        for (int i = 0; i < n; i++)
            input.Add(reader.ReadLine());
 
        // 입력받은 값을 비교할 때 대문자로 비교해주고 정렬해줍니다.
        input.Sort((x, y) => x.ToUpper().CompareTo(y.ToUpper()));
 
        writer.WriteLine(input[0]);
 
        // 전부 비교 후 List 클리어
        input.Clear();
    }
 
    writer.Close();
    reader.Close();
}
cs

 

읽어주셔서 감사합니다. 좋은 하루 보내세요

728x90