import java.util.Scanner;
public class Main{
public static void main(String[] args) {
// 문제풀기 전 알아야하는 것!!
// A ~ Z 65 ~ 90
// a ~ z 97 ~ 122
Scanner sc = new Scanner(System.in);
String s = sc.next();
int arr[] = new int[26];
for(int i=0;i<s.length();i++) {
if('A'<=s.charAt(i) && s.charAt(i)<='Z') { // 대문자 범위
arr[s.charAt(i)-'A']++; // A 대신 65를 빼도 무방 / 해당 인덱스값 1증가
}else { // 소문자 범위
arr[s.charAt(i)-'a']++; // a 대신 97을 빼도 무방 / 해당 인덱스값 1감소
}
}
int max = -1;
char ch = '?';
for(int i=0;i<26;i++) {
if(max<arr[i]) {
max = arr[i];
ch = (char)(i+65); // 대문자로 출력해야하므로 65를 더해줌
} else if (max == arr[i]) {
ch = '?';
}
}
System.out.println(ch);
}
}
int 를 char 에 넣을 경우 반드시 (char)을 붙여 캐스팅을 해주어야함!!
arr 안에 대문자 알파벳 개수만큼 담아줌!!
해당 문제는 대소문자 구분이 없이 카운팅되며, 대문자로 출력해야함!
해당 arr에 알파벳을 담았다고 생각하고 해당 알파벳 순서에 ++카운팅을 하는 개념!
그래서 수가 가장 많은 알파벳을 출력한다고 생각하면 된다 :) (아래이미지 참고)
대문자의 경우
s.charAt(i) 으로 해당 인덱스의 값을 불러와 -65 또는 -'A'를 해주도록 함
ex) D인 경우 arr 번호는 3번이 나와야하므로 D의 값인 68에서 65를 빼 3을 반환하도록 함
그렇게 되면 3번 인덱스가 카운팅됨!
소문자의 경우에는 -97 또는 -'a'를 해주도록 함
'코딩테스트 연습' 카테고리의 다른 글
[JAVA] 1316번 그룹 단어 체커 (0) | 2023.10.24 |
---|---|
[JAVA] 백준 3052 나머지 (0) | 2023.10.17 |
[백준] 1008번 문제 A/B - java (0) | 2022.10.27 |
댓글