알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
단어 내 문자의 갯수가 대소문자 구분없이 통일 되어 확인해야되기 때문에, 영대문자로 통일하였다.
또 한가지는 A~Z를 문자 인코딩 값인 65 ~ 90 를 이용하여 일치 여부 확인하였으며, 이를 바탕으로 카운팅하여 배열에 각 영문자 사용 횟수를 넣어 비교하였다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine().toUpperCase();
int[] arr = new int[26];
int cnt = 0;
for(int i =0; i < 26; i++){
for(int j=0; j < str.length(); j++){
if(i+'A' == str.charAt(j)){
arr[i] += ++cnt;
}
cnt = 0;
}
}
int max = Arrays.stream(arr).max().getAsInt();
int maxIndex = 0;
for(int i=0; i < arr.length; i++){
if(arr[i] == max){
++cnt;
maxIndex = i;
}
}
if(cnt >= 2){
System.out.println("?");
}else{
System.out.println((char)(maxIndex+ 'A'));
}
}
}