본문 바로가기
Algorithm/Java

[Java]백준 1157번 :: 단어 공부

by dev_mac-_- 2018. 12. 25.

백준 온라인 저지 1157번 '단어 공부'

Java 알고리즘 문제풀이

풀이

이 문제에서는 아스키코드의 int값을 이용하면 빠르게 해결할 수 있다. 

그리고 이 문제에서 처음 전제조건에 대문자와 소문자를 구별하지 않는다. 그리고 출력때 가장 많이 사용된 알파벳은 대문자로 출력하므로 사용자가 소문자로 입력을 하던지 대문자를 입력을 하던지에 관계없이 string에 모두 대문자로 변환하여 저장해야한다.

반복문에서 cnt라는 배열을 생성했다. 이 배열에 각 알파벳이 문장에 몇개 있는지에 대해 count값을 저장하고, max값과 비교하여 가장 많이 포함하는 문자를 result에 담는다. 그런데, 2개의 알파벳의 max값이 같다면 '?' 물음표를 출력한다.

import java.util.Scanner;

public class java_1157 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine().toUpperCase();

        int[] cnt = new int[26];
        int max = 0;
        char result = '?';

        for (int i = 0; i < str.length(); i++) {
            cnt[str.charAt(i) - 65]++;
            if (max < cnt[str.charAt(i) - 65]) {
                max = cnt[str.charAt(i) - 65];
                result = str.charAt(i);
            } else if (max == cnt[str.charAt(i) - 65]) {
                result = '?';
            }
        }
        System.out.println(result);

        sc.close();
    }
}

댓글