-
[Baekjoon Online Judge] 1157번: 단어 공부문제 풀이/Baekjoon Online Judge 2021. 1. 4. 21:53
[Baekjoon Online Judge] 1157번: 단어 공부
알파벳의 개수를 세고 가장 많은 알파벳을 대문자로 출력하는 문제이다. 개수가 같은 알파벳이 있으면 ?를 출력하도록 한다.
import java.io.*; import java.util.HashMap; import java.util.Map; public class Baekjoon1157 { public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); String word = bufferedReader.readLine().toUpperCase(); // 대소문자 구분 x Map<Character, Integer> characterMap = new HashMap<>(); for (int i = 0; i < word.length(); i++) { Character character = word.charAt(i); if (characterMap.containsKey(character)) characterMap.put(character, characterMap.get(character) + 1); else characterMap.put(character, 1); } int max = 0; Character resultKey = null; for (Character key : characterMap.keySet()) { // 가장 자주 언급된 key 와 언급 횟수를 저장 if (max < characterMap.get(key)) { max = characterMap.get(key); resultKey = key; } } int count = 0; for (Character key : characterMap.keySet()) { // 중복되는 횟수를 count if (characterMap.get(key) == max) ++count; } if (count == 1) bufferedWriter.write(resultKey); // 언급된 횟수가 1번이면 가장 많이 언급되었다. else bufferedWriter.write('?'); // 1번 이상이면 ? 출력 bufferedWriter.flush(); bufferedReader.close(); bufferedWriter.close(); } }
간단하게 개수를 세어 Map에 저장하였고, 가장 큰 값은 max로 두었다. 출력하기 전 max 크기의 value를 가진 key의 개수를 count하고 해당 개수에 맞게 처리한다.
'문제 풀이 > Baekjoon Online Judge' 카테고리의 다른 글
[Baekjoon Online Judge] 11719번: 그대로 출력하기 2 (0) 2021.01.05 [Baekjoon Online Judge] 11721번: 열 개씩 끊어 출력하기 (0) 2021.01.04 [Baekjoon Online Judge] 10809번: 알파벳 찾기 (0) 2021.01.04 [Baekjoon Online Judge] 1152번: 단어의 개수 (0) 2021.01.04 [Baekjoon Online Judge] 8958번: OX퀴즈 (0) 2021.01.04