import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int arr[] = new int[26];
String s = br.readLine();
int len = s.length();
for(int i = 0; i < len; i++){
char c = s.charAt(i);
if (c<91) arr[c-65]++; //대문자인 경우
else arr[c-97]++; //소문자인 경우
}
int max=0;
int maxi=0;
for(int i = 0; i < 26; i++){
if (max<arr[i]){
max = arr[i];
maxi = i;
}
else if (max==arr[i]){
maxi = -1;
}
}
if (maxi==-1) bw.write("?");
else bw.write((char)maxi+65);
bw.flush();
br.close();
bw.close();
}
}
대소문자 구분 없이 횟수를 카운트하므로 알파벳 개수 크기의 int배열 arr을 선언한다. 위 아스키 테이블을 보면 대문자는 65~90, 소문자는 97~122임을 알 수 있다. 입력받은 문자열 s의 각 문자(알파벳)을 0~25에 매칭한 후 그 인덱스의 값을 1 증가시킨다.
그런 다음 가장 카운트가 많이 된 알파벳을 찾기 위해 for문을 25번 돌리면서 max값을 갖는 index를 찾는다. 만약 max값이랑 같은 값을 갖는 인덱스가 있으면 maxi에 -1을 대입
그렇게 해서 마지막으로 maxi==-1이면 가장 많이 사용된 알파벳이 여러 개 존재하는 경우이므로 ?를 출력하고, 나머지 경우에는 인덱스를 알파벳 대문자로 변환해서 출력한다. 웬만하면 아스키코드도 0, A, a 정도는 외워두는 게 좋을 것 같다...
왜 자꾸 BufferedWriter가 안 되는지 알았다... 정수는 문자나 문자열로 변환해줘야 하는 거였음 ㅠㅠ 이건 백준 자바로 풀 때 유의사항 정리해서 올려야겠다