자바알고리즘 - 문자열 - 백준 1157 단어 공부

 

문제

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

 

생각

1. 입력받을 때 대문자건 소문자건 -97과 -65 아스키 코드를 이용해서 알파벳순으로 저장해 놓는다.

2. 저장해놓은 배열을 이용하여 26번까지 순회하며 max값을 찾는다.

 

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        int[] arr = new int[26]; //영어 개수
        String str = bf.readLine();
        for(int i=0; i<str.length();i++) {
            if(str.charAt(i)>='a' && str.charAt(i)<='z') {
                arr[str.charAt(i) - 97]= arr[str.charAt(i) - 97]+1; //소문자면 char계산을 통해 해당 문자 +1
            }
            else {
                arr[str.charAt(i)-65] = arr[str.charAt(i)-65]+1; //대문자면 char계산을 통해 해당 문자+1
            }
        }
        int max=0;
        char ch = '?';
        for(int i=0; i<26; i++) {
            if(arr[i]>max) {
                max = arr[i];
                ch = (char)(i+65); //대문자로변경
            }
            else if(arr[i]==max) {
                ch='?';
            }
        }
        System.out.println(ch);
    }
}

 

+ Recent posts