Algorithm/백준알고리즘

[백준알고리즘] 문자열 5단계 -1157번 단어 공부(JAVA)

개발자하소서 2022. 7. 8. 08:35
728x90
반응형
SMALL

📌문제

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

 

 

 📌입력

첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.

 
 

📌출력

첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

 

 

📌코드

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[26];
        //알파벳의 수는 총 26개이기에 26개의 배열을 선언한다. 
        String st = sc.next();
        // 문자열을 입력받는다.
        
        for(int i =0; i<st.length(); i++ ){
            // 입력받은 문자열을 첫번째 문자부터 ~ 끝까지 검사하기 위해 반복문을 사용한다.
            // 입력받은 알파벳은 대,소문자를 구분하지 않는다.
            // 아스키코드에서 대문자 A는 65 , 소문자 a는 97
            //              대문자 Z는 90 , 소문자 z는 122
            if(65 <= st.charAt(i) && st.charAt(i) <=90){
                // 입력받은 문자열을 문자단위로 끊은 문자가 대문자 범위라면
                arr[st.charAt(i) -65]++;
                // 해당 인덱스의 값을 증가시킨다.
                
            } else{ // 아니면 소문자 범위라면 
                arr[st.charAt(i) - 97]++;
                // 해당 인덱스의 값을 증가시킨다. 
            }
            // 모든 문자열의 검사를 끝낸다. 
            
        }
        
        int max  = 0;
        // 배열의 원소들 값을 비교하기 위해 가장 큰 값을 가지고 있는 인덱스 문자를 출력해야하기에
        // 최대값을 저장할  max변수를 선언한다.
        char ch = '?';
        // 출력할 문자변수 ch를 선언한다. 
        
        for(int i=0; i<26; i++){
            // 배열들을 순회하기 위해 반복문을 작성한다. 
            if(arr[i] > max){
                // 배열안의 인덱스가 최대값보다 클 경우 
                max = arr[i];
                //해당 원소값을 최대값으로 저장
                ch  = (char)(i + 65);
                // ch 문자를 해당 인덱스에 해당하는 문자로 대치함 
                // 대문자로 출력하여야 하기에 65를 더해준다. 
            }else if(arr[i] == max){
                // 만약 배열안의 원소값이 최대값과 같다면 
                // 즉, 그렇다면 최대값이 최소 2개 이상이라는 의미기에 
                ch = '?';
                // ch를 ? 로 저장한다. 
            }
        }
        
            System.out.print(ch);
    }
}
728x90
반응형
LIST