코딩 테스트/백준

백준 - [단계별로 풀어보기 문자열] 10809 알파벳 찾기

devrabbit22 2026. 3. 8. 23:52

이번 문제는 문자열 S가 주어졌을 때 a ~ z까지 각 알파벳이 처음 등장하는 위치를 출력하는 문제이다.
만약 해당 알파벳이 문자열에 존재하지 않는다면 -1을 출력한다.

C#에서 char는 내부적으로 ASCII 코드 값을 가지는 숫자 타입이기 때문에 문자 간 연산이 가능하다.

'a' - 'a' = 0   (97 - 97 = 0)
'b' - 'a' = 1   (98 - 97 = 1)
int index = S[i] - 'a';
 

위와 같이 'a'를 기준으로 빼주면 알파벳을 배열의 인덱스 값으로 변환할 수 있다.

이 방법을 사용하면 알파벳을 배열 인덱스로 변환하여 각 문자의 등장 위치나 개수를 효율적으로 관리할 수 있다.

 //백준 10809번 알파벳 찾기
 string S = Console.ReadLine();
 int[] alphabet = new int[26];

 //모든 알파벳의 값에 기본값인 -1을 할당
 for(int i = 0; i < alphabet.Length; i++)
 {
     alphabet[i] = -1;
 }
 //입력받은 문장의 길이만큼 반복하며 검사
 for (int i = 0; i < S.Length; i++)
 {
     // 현재 문자(S[i])를 배열 인덱스로 변환
     // 'a'를 기준으로 빼면 a=0, b=1, c=2 ... z=25
     // 알파벳 문자를 배열 인덱스(0~25)로 변환
     int index = S[i] - 'a'; //알파벳을 배열의 인덱스(0~25)로 변환하기 위해서 'a'를 뺀다.

     // 해당 알파벳이 아직 등장하지 않았다면
     // 현재 문자열에서의 위치(i)를 저장
     if (alphabet[index] == -1)
         alphabet[index] = i;
 }
 //모든 알파벳 배열을 순회해 모든 값 출력
 foreach(int value in alphabet)
 {
     Console.Write(value + " ");
 }

출력 결과