단어 공부
11 June 2019
문제 : https://www.acmicpc.net/problem/1157
이번은 String에서 가장 많이 사용된 알파벳을 찾는 문제를 풀어보도록 하겠습니다.
import java.util.Scanner;
public class Main {
private static Integer[] alphabetArry = new Integer[26];
public static void main(String args[]) {
for (int i = 0; i < 26; i++) {
alphabetArry[i] = 0;
}
Scanner scanner = new Scanner(System.in);
String value = scanner.next();
for (int i = 0; i < value.length(); i++) {
int index = (value.charAt(i) - 'A') % 32;
alphabetArry[index]++;
}
int num = -2;
int maxNum = 0;
for (int i = 0; i < 26; i++) {
if (alphabetArry[i] > maxNum) {
num = i;
maxNum = alphabetArry[i];
} else if (alphabetArry[i] == maxNum) {
num = -2;
}
}
System.out.println((char) ('A' + num));
}
}
먼저 각 알파벳의 등장 횟수를 저장할 array를 생성하고,모두 0으로 초기화시켜주도록 합니다.아스키코드로 소문자 a = 대문자 A + 32 이므로 string의 각 char에서 A를 빼주고 32로 나누어주면 0~25까지의 값이 나오게 됩니다.
각 값에 따라 alphabetArry값을 더해주고, 최대값이 중복되는 경우는 -2가 나오도록 합니다. (?는 'A'보다 2가 적은 값이기 때문)