백준 1157 단어 공부

HARIBO·2021년 7월 15일
0

풀이

  • 주어진 문자열을 대문자로 변환 후 해시맵에 나오는 문자 수 대입
  • 해시맵을 토대로 가장 많은 문자를 출력하기. 가장 많은 문자가 여러 개일 경우 생각하기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class Problem1157 {
    static Map<Character, Integer> map = new HashMap<>();


    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String inputString = br.readLine();
        //대문자 변환
        inputString = inputString.toUpperCase();

        //Map 갱신
        for(int i = 0; i < inputString.length(); i++){
            //처음 갱신
            if(!map.containsKey(inputString.charAt(i))){
                map.put(inputString.charAt(i), 1);
            } else {
                map.put(inputString.charAt(i), map.get(inputString.charAt(i))+1);
            }
        }

        //가장 많은 알파벳 찾기
        //가장 많은 알파벳이 여러개 존재 판별
        boolean flag = false;
        int maxNum = 0;
        Character answer = null;
        Iterator<Character> keys = map.keySet().iterator();
        while(keys.hasNext()){
            Character key = keys.next();
            //최댓값 중복
            if(maxNum==map.get(key)){
                flag = true;
                answer = '?';
            } else if(map.get(key) > maxNum){
                //플레그 초기화
                flag = false;
                maxNum = map.get(key);
                answer = key;
            }
        }

        System.out.println(answer);
    }
}

0개의 댓글