algorithm/백준

[백준] 가장 많은 글자 -1371 Java[자바]

달마루 2023. 2. 11. 23:18


[Bronze II] 가장 많은 글자 - 1371

문제 링크

 

1371번: 가장 많은 글자

첫째 줄부터 글의 문장이 주어진다. 글은 최대 50개의 줄로 이루어져 있고, 각 줄은 최대 50개의 글자로 이루어져 있다. 각 줄에는 공백과 알파벳 소문자만 있다. 문장에 알파벳은 적어도 하나 이

www.acmicpc.net

성능 요약

메모리: 14216 KB, 시간: 120 ms

분류

구현(implementation), 문자열(string)

문제 설명

영어에서는 어떤 글자가 다른 글자보다 많이 쓰인다. 예를 들어, 긴 글에서 약 12.31% 글자는 e이다.

어떤 글이 주어졌을 때, 가장 많이 나온 글자를 출력하는 프로그램을 작성하시오.

입력

첫째 줄부터 글의 문장이 주어진다. 글은 최대 50개의 줄로 이루어져 있고, 각 줄은 최대 50개의 글자로 이루어져 있다. 각 줄에는 공백과 알파벳 소문자만 있다. 문장에 알파벳은 적어도 하나 이상 있다.

출력

첫째 줄에 가장 많이 나온 문자를 출력한다. 여러 개일 경우에는 알파벳 순으로 앞서는 것부터 모두 공백없이 출력한다.



답 :  값이 null이 아닐 때 까지 반복문을 돌려 배열에 넣어주고,
max를 찾고, 그와 같은 경우 출력해준다. 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        int arr[] = new int[26];
        while((str = br.readLine()) != null){
            for(int i = 0; i < str.length(); i++){
                if(str.charAt(i) >= 'a' && str.charAt(i) <= 'z'){
                    arr[str.charAt(i) - 'a']++;
                }
            }
        }

        int max = 0;
        for(int i = 0; i < 26; i++){
            max = Math.max(max, arr[i]);
        }

        for(int i = 0; i < 26; i++){
            if(arr[i] == max){
                System.out.print((char)('a' + i));
            }
        }
    }
}