단어 공부

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가 적은 값이기 때문)