일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- c#
- 마인크래프트
- 배열 리스트
- 자료구조
- vrm posing desktop
- 라자냐
- blender
- 다이나믹프로그래밍
- unity engine
- 이진 탐색
- 큐
- T자형 인재
- 택시 기하학
- 카니발대학교 공대강국
- 코딩테스트
- 그리디 알고리즘
- 빅오 표기법
- VRoid Studio
- i자형 인재
- 시작
- 잴다의 전설 티어스 오브 더 킹덤
- 우선순위 큐
- 그래픽 디자인
- 영어
- 닌텐도 스위치 2
- windows 12
- 2025 대한민국 채용박람회
- 스택
- VPS
- 브루트포스 알고리즘
Archives
- Today
- Total
WalkerJei's Lifelog
백준알고리즘 1157번 단어 공부 C# 본문
세부 정보
- 사이트: 백준알고리즘
- 번호: 1157
- 문제명: 단어 공부
- 언어: C#
- 분류: 구현, 문자열
- 비고:
문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
입력
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
출력
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
풀이
ToUpper() 함수는 문자열 내 알파벳들을 대문자로 바꾼다.
65는 아스키 코드로 A를 의미한다.
// 영단어를 입력받고으면 모두 대문자로 바꿔서 저장한다.
string word = Console.ReadLine().ToUpper();
// 단어에 있는 알파벳의 개수를 저장한다.
int[] alphabet = new int[26];
// 가장 개수가 많은 알파벳의 개수 값
int maxValue = 0;
// 가장 개수가 많은 알파벳
char letter = ' ';
// 1. 입력받은 문자열 단어를 word[i]를 사용해 문자 형태로 가져온다.
// 2. 가져온 알파벳에서 65를 뺀다. 65는 아스키 코드로 A를 의미한다.
// 3. 최종적으로 나온 숫자에 따라 alphabet 배열에 값을 1씩 더해준다.
// 4. 예: 0이면 A, 25면 Z에 저장된다.
for (int i = 0; i < word.Length; i++)
alphabet[word[i] - 65]++;
for (int i = 0; i < alphabet.Length; i++)
{
// 알파벳 최대 개수가 alphabet[i]보다 클 경우
if (maxValue < alphabet[i])
{
// 최대 크기 갱신
maxValue = alphabet[i];
// 가장 수가 많이 나온 알파벳으로 교체, 문자로 전환과정 거침
letter = (char)(i + 65);
}
// 만약 가장 개수가 많은 알파벳이 여러개인 경우 ? 출력
else if (maxValue == alphabet[i])
letter = '?';
}
// 가장 많이 입력된 알파벳 출력
Console.Write(letter);
후기
알파벳을 다루는 문제였는데 이번에도 제한 시간 30분 내에 다 풀지 못했다. 알파벳을 다루는 로직은 좀 복잡하긴 하다. 하지만 ToUpper() 함수를 다룬다면 반대로 소문자가 필요할 때는 ToLower() 함수를 사용하면 된다는 것을 알 수 있다. 하나를 알았는데 누가 가르쳐 주지 않아도 거기서 새로운 열을 알려면 더 많은 문제를 꾸준히 풀어서 소뇌가 기억할 정도로 가야 한다.
참고로 소뇌는 육체 활동을 제어하는 역할을 맡고 있다. 보통 사람들이 자전거를 타는 것에 비유하면 페달을 밟고, 넘어지지 않게 균형을 조절하는 것을 숙달할 떄 소뇌를 사용하지 대뇌로 복잡하게 생각하지는 않는다. 문제를 척 보기만 해도 솔루션이 딱 나올 정도면 소뇌가 숙련된 프로그래머라고 할 수 있다.
'소프트웨어 개발 > 코딩테스트(기성 문제)' 카테고리의 다른 글
백준알고리즘 1699번 제곱수의 합 C# (0) | 2025.03.18 |
---|---|
백준알고리즘 1932번 정수 삼각형 C# (0) | 2025.03.17 |
백준알고리즘 5622번 다이얼 C# (0) | 2025.03.15 |
백준알고리즘 10988번 팰린드롬인지 확인하기 C# (0) | 2025.03.14 |
백준알고리즘 2675번 문자열 반복 C# (0) | 2025.03.13 |