| 문제
영어에서는 어떤 글자가 다른 글자보다 많이 쓰인다. 예를 들어, 긴 글에서 약 12.31% 글자는 e이다.
어떤 글이 주어졌을 때, 가장 많이 나온 글자를 출력하는 프로그램을 작성하시오.
| 입력
첫째 줄부터 글이 주어진다. 글은 최대 50개의 줄로 이루어져 있고, 각 줄은 최대 50개의 글자로 이루어져 있다. 각 줄에는 공백과 알파벳 소문자만 있다. 글에 알파벳은 적어도 하나 이상 있다.
| 출력
첫째 줄에 가장 많이 나온 문자를 출력한다. 여러 개일 경우에는 알파벳 순으로 앞서는 것부터 모두 공백없이 출력한다.
| 풀이
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));
StringBuilder sb = new StringBuilder();
String str;
int[] count = 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')
count[str.charAt(i) - 'a']++;
}
}
int max = 0;
for (int j : count)
max = Math.max(max, j);
for(int i=0; i<count.length; i++) {
if (count[i] == max)
sb.append((char) (i + 'a'));
}
System.out.println(sb);
}
}
| 정리
알파벳 갯수에 맞는 길이를 가진 배열을 생성한 뒤,
입력 받은 문자열을 체크하면서 a~z 사이에 있는 문자라면 일치하는 배열의 위치에 ++ 를 해준다.
가장 많은 글자가 중복되면 전부 출력해줘야 하므로, 확인하는 코드도 추가해주고
(char)(i+'a')로 출력할 때는 갯수가 아닌 문자가 출력될 수 있게 한다.