티스토리 뷰


1. Java 구현

          
package Q1371;

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

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();
        char[] arr = new char[26];
        int max = 0;
        while(sc.hasNextLine()) {
            char[] input = sc.nextLine().toCharArray();
            for (int i = 0; i < input.length; i++)
                if (input[i] != ' ')
                    max = Math.max(max, ++arr[input[i] - 'a']);
        }

        for (int i = 0; i < arr.length; i++)
            if(arr[i] == max) sb.append((char)('a' + i));

        sb.append(System.lineSeparator());
        System.out.println(sb.toString());
    }
}


2. 코드설명

 이 문제에서 가장 어려운 부분은 가장 많이 입력된 글자를 찾는 것이 아닌, 문자열을 언제까지 입력받을지 제어하는 것이 가장 어렵다. 

 다른 문제들은 입력의 갯수가 정해져있지만, 이 문제는 언제까지 입력받을지 조건이 없다. 이럴 경우에는 EOF의 조건이 필요하다. EOF는 데이터소스로부터 더이상 읽을 내용이

 없는 경우를 의미한다. Scanner 같은 경우 다음에 입력받은 문자의 유무를 판별하는 hasNextLine()이라는 메소드가 존재한다.

 위와 같이 구현하면 채점 시, EOF를 확인해서 입력 반복문이 멈추게 된다. 가장 많은 글자를 확인하는 방법은 알파벳의 수만큼의 char 배열을 생성하고 한글자씩 읽어서 해당 

 char의 숫자에 해당하는 배열의 인덱스를 증가시키는 방법으로 풀 수 있다. 단, 공백이 존재할 수 있기 때문에 공백 제어가 반드시 필요하다.


3. Pain Point

 언제까지 입력받을지 제어하는 것이 가장 어려웠다. 이 문제는 정답률이 낮은데, 가장 많은 글자를 찾아내는 것이 아닌, 입력을 제어하는 것이 가장 어려워서 인것 같다!


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함