[BAEKJOON] 백준 26594: ZOAC 5 (C#)

2024. 10. 16. 15:07IT/BaekJoon

문제 링크

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

 

 

문제

2022년 12월, 다섯 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다.

매번 새로운 방식으로 문자열을 보여주던 성우는 이번 대회에서는 평범하게 앞 글자부터 하나씩 보여주기로 했다. 성우는 문자를 입력하기 위해 키보드로 손을 뻗은 순간, 실수로 마시던 소주를 키보드에 쏟아버리고 말았다... 알코올에 취한 키보드는 어떤 자판을 한 번만 눌러도 N번 누른 것처럼 인식을 하게 되어버렸다!

소중한 키보드를 고치기 위해 고장 접수를 하는 성우는 N을 정확하게 알아야 한다. 눈물이 앞을 가려 모니터를 제대로 볼 수 없는 성우를 위해 대신 N을 구해주도록 하자!

 

 

입력

첫째 줄에 성우가 고장 난 키보드로 입력한 문자열이 주어진다.

문자열의 길이는 1,000,000보다 크지 않고, 빈 문자열은 주어지지 않는다.

성우는 알파벳 대문자만 입력하고, 어떤 알파벳도 두 번 이상 입력하지 않는다.

성우는 독수리 타법이므로 한 번에 하나의 자판만 누를 수 있다.

 

 

출력

첫째 줄에 N을 출력한다.

 

 

 

통과한 답안

namespace _26594
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string input = Console.ReadLine();
            int cnt = 1;
            char key = input[0];

            for (int i = 1; i < input.Length; i++)
            {
                if (input[i] == key) cnt++;
                else break;
            }

            Console.WriteLine(cnt);
        }
    }
}

 

키를 한 번 누르면 N번 눌리는 키보드로 문자열을 작성한 경우

입력받은 문자열을 확인하여 N을 구하는 문제이다.

 

입력받은 문자열의 첫 글자를 key로 저장한 뒤에

문자열을 순회하면서 다른 문자가 나타나는데 걸리는 횟수를 찾도록 구현하였다.

 

이는 조건에서 같은 알파벳을 두 번 이상 입력하지 않는다는 조건으로 이용한 해결 방법이며,

만약 이와 같은 조건이 없다면

각각의 문자가 나타나는 횟수를 저장하고

문자열을 순회하며 횟수가 달라지는 시점을 찾은 후에

두 횟수 중에서 작은 값을 선택하도록 구현하면 될 것으로 생각된다.