Java/Java 알고리즘

백준 1371번 가장 많은 글자 JAVA 구현해보기

kimc 2022. 2. 1. 21:24

```

백준 1371번 가장 많은 글자 JAVA 구현해보기

```

이번 글을 통해 배워갈 내용

  1.  백준 1371번 풀이

https://www.acmicpc.net/problem/1371

 

1371번: 가장 많은 글자

첫째 줄부터 글의 문장이 주어진다. 글은 최대 50개의 줄로 이루어져 있고, 각 줄은 최대 50개의 글자로 이루어져 있다. 각 줄에는 공백과 알파벳 소문자만 있다. 문장에 알파벳은 적어도 하나 이

www.acmicpc.net

 

 

 

백준 1371번 가장 많은 글자는 

난이도 브론즈 등급의 문제로서

 

여러 줄의 문장을 입력받고

가장 빈도수가 높은 문자들을 출력해주면 됩니다.

 

끝은 따로 표현되지 않습니다.


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


일단 문장을 입력받습니다.

 

끝은 아래와 같이 null을 이용해 확인합니다.

(str = br.readLine()) != null

단어 빈도수를 배열을 활용해 한 다음

// 단어 빈도수 카운트
int[] alphabetArr = new int[26];
for (char ch : statementStr.toString().toCharArray()) {
    if (ch >= 'a' && ch <= 'z') {
        final int idx = ch - 'a';
        alphabetArr[idx]++;
    }
}

스트림을 이용해 최빈도 값을 찾고

최빈도 단어를 출력합니다.

// 최빈도 값 찾기
int maxVal = Arrays.stream(alphabetArr).max().getAsInt();

// 최빈도 단어 출력
for (int i = 0; i < 26; i++) {
    if (alphabetArr[i] == maxVal) {
        System.out.print((char) (i + 'a'));
    }
}

 

 

전체 코드는 아래와 같습니다.

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

public class Main {
    public static void main(String[] args) throws IOException {
        final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder statementStr = new StringBuilder();

        // 값 입력
        String str;
        while ((str = br.readLine()) != null) {
            statementStr.append(str);
        }

        // 단어 빈도수 카운트
        int[] alphabetArr = new int[26];
        for (char ch : statementStr.toString().toCharArray()) {
            if (ch >= 'a' && ch <= 'z') {
                final int idx = ch - 'a';
                alphabetArr[idx]++;
            }
        }

        // 최빈도 값 찾기
        int maxVal = Arrays.stream(alphabetArr).max().getAsInt();

        // 최빈도 단어 출력
        for (int i = 0; i < 26; i++) {
            if (alphabetArr[i] == maxVal) {
                System.out.print((char) (i + 'a'));
            }
        }
        br.close();
    }

}

 

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

728x90