Contents

[백준 1157]단어 공부 - JAVA 풀이

   Aug 15, 2021     1 min read     - Comments

바로가기

문제

문제


해석

  • 문자열이 주어졌을 때, 가장 많이 사용된 알파벳을 출력해라.

풀이

  1. 크기가 26인 int형 배열 하나를 선언한다. (알파벳 개수)

  2. 각각의 알파벳이 몇 번 사용 되었는지 1번배열에 입력한다.
    • 아스키 코드를 사용한다. 문자가 97보다 크다면 -‘a’ 아니면 -‘A’를 해준다.(a-a는 0이 되어서 0번째 배열의 값이 올라간다.)
  3. 가장 많이 사용 된 알파벳과 그 다음으로 사용 된 알파벳을 찾는다.

코드

import java.util.*;
import java.io.*;

public class Main{
    public static void main(String args[]) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        String s = br.readLine();
        int[] al = new int[26];
        int fir = 0, sec = -1;
        
        for(int i = 0; i < s.length(); i++){
            int index = s.charAt(i);
            
            if(index >= 97)
                al[index-'a']++;
            else
                al[index-'A']++;            
        }        
       
        for(int i = 1; i < 26; i++){
            if(al[i] >= al[fir]){
                sec = fir;
                fir = i;
            }
        }
        if(sec != -1 && al[fir] == al[sec]) //'a' 또는 'A' 만 입력받으면 sec가 -1이다.
            bw.write("?");
        else
            bw.write(fir+'A');  //다시 대문자 알파벳으로 출력
        
        bw.flush();
        bw.close();
    }
}