View

https://www.acmicpc.net/problem/1157

 

1157번: 단어 공부

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

www.acmicpc.net

📚 문제

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

 

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

 

예제 입력 예제 출력
Mississipi ?
zZa Z

 

📝 문제 해결

1. 대문자와 소문자를 구분하지 않기 때문에 입력받은 문자열을 모두 대문자로 변경해준다.

str.toUpperCase();

 

2. 영문자 개수 크기로 배열을 생성해주고 아스키코드를 사용하여 배열에 해당 문자의 인덱스의 카운트를 증가시켜준다. 

💡 chatAt(i)-'A'  / charAt(i)-65 : 영문자를 int 변수로 변환
문자 E의 인덱스 = 69(E의 아스키코드) - 65(A의 아스키코드)

 

3. max값과 비교하여 max보다 크면 최대값을 해당 인덱스으로 갱신 & result를 해당 문자 갱신

하지만, max값이 같다면 물음표를 출력한다.

 

💻 코드

package BOJ;

import java.util.Scanner;

public class No1157 {
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        String str = sc.next().toUpperCase();

        int[] count = new int[26];
        int max = 0;
        char result = '?';

        for(int i=0; i<str.length(); i++){
            int index = str.charAt(i)-'A';
            count[index]++;
            if(max < count[index]){
                max = count[index];
                result = str.charAt(i);
            }else if(max == count[index]){
                result = '?';
            }
        }

        System.out.println(result);
    }
}
728x90
Share Link
reply
«   2024/10   »
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