문제 출처 https://www.acmicpc.net/problem/1157
내가 작성한 코드
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 s = br.readLine().toUpperCase(); //대문자로 변경하여 받는다.
int str[] = new int[26];
for(int i=0; i<s.length(); i++) {
str[s.charAt(i)-65]++;
}
int max=-1;
char ch =' ';
for(int i=0; i<26; i++) {
if(max<str[i]) {
max = str[i];
ch = (char)(i+65);
}
else if(max==str[i]) {
ch = '?';
}
}
System.out.println(ch);
}
}
아스키코드
접근 방법
- toUpperCase()를 이용하여 대문자로 변환하여 s에 받는다.
- 아스키코드에서 대문자 이므로 -65를 하여 해당 인덱스 값을 +1해준다.
ex) A-65 = 0 이므로 str[0] =1- 최댓갓을 구하기 위해 max=-1로 초기화 해주고 str를 하나씩 모두 비교해가며 현재 최대값보다 크면 (char)캐스트 형식을 하여 문자로 바꾸어준다.
만약 현재 최대값과 값이 같다면 ?를 출력하도록 한다.