상세 컨텐츠

본문 제목

JAVA. 백준 알고리즘 단계별 문제 7단계(문제 번호 1157)

공-부/백준 알고리즘

by 사랑짱 2021. 6. 2. 19:36

본문

(문제 번호 1157)

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

 

 

문제 해결 포인트

대소문자를 구분하여 입력 받지만 알파벳의 빈도수를 체크할 때는 대/소문자를 동일하게 여긴다.

 

 

문제 해결 과정

1. 먼저 각 알파벳 위치를 가리킬 int형 배열을 생성한다.

2. BufferedReader를 통해 단어를 입력받는다.

3. charAt( )을 이용하여 각 인덱스에 해당하는 문자(아스키코드)를 추출하여 변수 ch에 저장한다.

4. ch가 가지고 있는 아스키코드 값에서 'A' 또는 'a'를 빼서 인덱스로 주고, 배열의 값은 +1 증가시킨다.

5. alpha[] 배열 중 최대값(가장 많은 횟수)을 갖는 alpha[index]를 찾는다.

6. 최대값을 갖는 인덱스에 'A'를 더해주면 아스키코드 값이 나오므로 char타입으로 변환하여 출력한다. 

   (최대값을 같는 인덱스가 여러 개일 경우 조건문을 통해 '?'가 입력되도록 한다.)

 

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
32
33
34
35
36
37
38
39
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;


public class No05 {


    public static void main(String[] args) throws IOException {       
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));        
        String str = br.readLine();

        int[] alpha = new int[26];

        for(int i = 0; i <str.length(); i++) {
            char ch = str.charAt(i);        
            if(65 <= ch && ch < 91) {
                alpha[ch -'A']++;                
            } else if(97 <= ch && ch < 123) {
                alpha[ch -'a']++;
            }            
        }
        
        int max = 0;
        char ch = '?';

        for(int i : alpha) {
            if(max < i) {
                max = i;
                ch = (char) (i + 'A');
           } else if(max == i) {
                ch = '?';
            }
        }
        System.out.println(ch);   
             
  } //main

} //class
cs

 

 

관련글 더보기