새벽의 기록

[백준 JAVA] 1371번 : 가장 많은 글자[자바] 본문

Algorithm

[백준 JAVA] 1371번 : 가장 많은 글자[자바]

OneTen 2023. 6. 12. 10:00

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

 

1371번: 가장 많은 글자

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

www.acmicpc.net



문제

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

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

입력

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

출력

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

풀이

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //scanner 와 유사

        int[] alpha = new int[26]; //알파벳 개수 배열
        int max = 0;
        String input; //EOF 처리를 위해 받을 문자열;; 이거땜에 엄청 헤맴
        String str = "";


        //인텔리제이에서는 입력의 끝을 모르기 때문에 임의로 엔터 한 번 더 치면 프로그램 종료되게끔 while문에 조건 한 개를 더 넣었다 [&& !input.isEmpty()]
        //근데 백준에서는 또 이렇게 하면 인식 안돼서 빼야됨 아 ㅋㅋ
        //인텔리제이에서 실행되게 만드는 조건문은 while ((input = br.readLine()) != null && !input.isEmpty())
        while ((input = br.readLine()) != null) {
            str += input;
        }

        //알파벳 갯수 저장 및 가장 많이 나온 알파벳의 횟수 저장
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) != ' ') {
                alpha[str.charAt(i) - 'a']++;

                if (alpha[str.charAt(i) - 'a'] > max) {
                    max = alpha[str.charAt(i) - 'a'];
                }
            }
        }

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


    }
}
Comments