
이번 문제는 대문자와 소문자의 구분이 없기 때문에 입력받은 문자열을 대문자로 변환한 후 각 알파벳의 인덱스를 이용해 등장 횟수를 계산하는 방식으로 접근했다.
알파벳은 총 26개이므로 int[26] 배열을 생성하고, 각 문자를 c - 'A' 연산을 통해 0~25 범위의 인덱스로 변환하여 해당 알파벳의 등장 횟수를 카운트했다.
이후 배열에서 가장 큰 값을 찾은 뒤, 그 값과 같은 등장 횟수를 가진 알파벳이 몇 개인지 확인했다.
만약 최대값을 가진 알파벳이 여러 개라면 ?를 출력하고, 하나만 존재한다면 인덱스를 다시 문자로 변환하여 결과를 출력하도록 구현했다.
//백준 1157 단어 공부
string inputData = Console.ReadLine().ToUpper(); //소문자 대문자로 변환
int[] arr = new int[26]; //알파벳 배열
int count = 0;
int index = 0;
//알파벳 등장 횟수 카운트
foreach(char c in inputData)
{
arr[c - 'A']++; //문자를 배열 인덱스로 변환해서 카운트
}
// 배열에서 가장 큰 값(가장 많이 등장한 알파벳의 개수) 찾기
int max = arr.Max();
//최대 값과 같은 알파벳이 몇개인지 확인
for(int i = 0; i< 26; i++)
{
if (arr[i] == max)
{
count++; //최대 값을 가진 알파벳 개수 증가
index = i; //해당 알파벳의 인덱스 저장
}
}
//최대값을 가진 알파벳의 수가 2개 이상인 경우 ? 출력
if (count > 1)
{
Console.WriteLine("?");
}
else
Console.WriteLine((char)(index + 'A')); // 인덱스를 다시 문자로 변환하여 출력 (index = 0 -> 'A', index = 1 -> 'B') index(0~25) + 'A'(65)
//ex) index = 0 -> 0 + 65 = 65 → 'A'


'코딩 테스트 > 백준' 카테고리의 다른 글
| 백준 - [단계별로 풀어보기 심화 1] 1316 단어 체커 (0) | 2026.03.18 |
|---|---|
| 백준 - [단계별로 풀어보기 심화 1] 2941 크로아티아 알파벳 (0) | 2026.03.17 |
| 백준 - [단계별로 풀어보기 심화 1] 2444 별 찍기 -7 (0) | 2026.03.16 |
| 백준 - [단계별로 풀어보기 심화 1] 10988 팰린드롬인지 확인하기 (0) | 2026.03.15 |
| 백준 - [단계별로 풀어보기 심화 1] 3003 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2026.03.12 |