'단어 공부' - 자바 (java)
문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
풀이방법
풀이 방법
대문자로 출력의 문제이기에 편리를 위해 입력값도 모두 대문자로 변환
-> String.toUpperCase(); 모두 대문자로 변경, 소문자는 String.toLowerCase();
알파벳 'A ~ Z'는 총 26개
-> int[] count = new int[26], 26크기의 배열 선언
입력 문자열 길이만큼 반복문 실행
-> 입력 문자열 한 글자씩, 해당 알파벳 순서의 int배열 count 값 증가
-> 'A'일 경우
ex) 'A'-'A' => 65-65 => 0으로 count배열 0번째 값 증가
알파벳 개수(배열크기)만큼 반복문 실행
-> 가장 중복값이 큰지 비교하며 max에 저장
-> 해당 위치 알파벳 알아내기 위해 (index + 'A')
ex) 1+'A' => 1+65 => 66, 66은 'B'에 해당
입력
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
출력
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
예제 입력 1
Mississipi
zZa
baaa
예제 출력 1
?
Z
A
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next().toUpperCase();
int[] count = new int[26];
for (int i = 0; i < str.length(); i++) {
int num = str.charAt(i) -'A' ;
count[num]++;
}
int max = 0;
char answer = '?';
for (int i = 0; i < count.length; i++) {
if(max < count[i]){
max = count[i];
answer = (char)(i+'A');
} else if (max == count[i]){
answer = '?';
}
}
System.out.println(answer);
}
}