백준

백준 1157번 c#

대왕군 2024. 1. 16. 19:49

 

using System;

namespace Baekjoon
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //입력값 받아오는 동시에 모두 대문자로 바꿈
            string input = Console.ReadLine().ToUpper();
            //어느 알파벳이 제일 많이 나왔는지 확인할 용도의 변수
            int max = 0;
            //결과값 담을 변수
            string result = "";

            //아스키코드 A~Z(65~90)를 이용
            int[] asciiBox = new int[91];
            
            //중복글자 나올때마다 asciiBox배열에 숫자 1씩 더함
            for (int i = 0; i < input.Length; i++)
            {
                //만약input[i]가 A라면 asciiBox[A]++이 되는데
                //여기서 A는 자동으로 숫자로 바뀌어 asciiBox[65]++이 된다
                //그래서 굳이 input[i]를 (int)로 강제형변환 해줄 필요가 없음
                asciiBox[input[i]]++;
            }

            //char형인경우 i로 쓰는 것이 가능함 이때 자동으로 아스키코드로 바뀜
            for (int i = 'A'; i <= 'Z'; i++)
            {
                //만약 asciiBox[i](특정 알파벳)이 max보다 크다면 실행
                if (asciiBox[i] > max)
                {
                    //max에 제일 많이 나온 특정 알파벳의 개수를 넣음
                    max = asciiBox[i];
                    //결과값에 i를 (char)로 강제형변환하여 알파벳으로 바꾼 뒤 저장함
                    //이후 본인은 result를 string형으로 만들었으므로 + ""를 해서 string형으로 바꿔줌
                    result = (char)i + "";
                }
                //만약 현재까지 나온 알파벳의 최대 개수와 현재확인중인 알파벳의 개수가 같을 때 실행
                else if (max == asciiBox[i])
                {
                    //결과값을 ?로 저장
                    result = "?";
                }
            }
            //결과 출력
            Console.WriteLine(result);

        }
    }
}

 

출처 [C#]백준 1157번 문제 풀이 :: 공부하는개미 (tistory.com)

 

[C#]백준 1157번 문제 풀이

# 문제 출제 사이트 https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단

antstudy.tistory.com

 

for문의 i로 char형을 쓸 수 있는지 처음 알게되었다

'백준' 카테고리의 다른 글

백준 1316번 c#  (0) 2024.01.17
백준 2941번 c#  (0) 2024.01.17
백준 10988번 c#  (0) 2024.01.16
백준 2444번 c#  (0) 2024.01.15
백준 3003번 c#  (0) 2024.01.15