코딩테스트/백준

[백준 - 1157] 단어 공부. java

머밍 2025. 4. 1. 00:33

 

  • 입력되는 단어 길이 1,000,000 -> 버퍼드 리더
  • 대문자로 출력되어야하기 때문에 문자열을 대문자로 바꾸고 대문자 기준으로 개수 새기
  • 개수 배열을 순회하며 최댓값이 두번 나왔을때 즉, 가장 많이 사용된 알파벳이 여러 개면 ?으로 바꾼

 

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


public class Main {
    public static int[] getAlphabetCount(String str){
        int[] counts = new int[26];
        for(int i = 0; i<str.length(); i++){
            counts[str.charAt(i) - 'A']++;
        }
        return counts;
    }
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str1 = br.readLine();

        int[] s1 = getAlphabetCount(str1.toUpperCase());

        Character answer ='?';
        int max = 0;
        for(int i = 0; i<26; i++){
            if(s1[i] > max){
                max = s1[i];
                answer = (char)('A'+i);
            } else if(s1[i] == max){
                answer = '?';

            }
        }


        System.out.println(answer);

    }
}

 

 

다른 풀이

함수 부분이 다르다 

for문으로 알파벳 전체를 순회하며 알파벳마다 문자열에 몇개 들어있는지를 구하는 함수를 사용

그렇게 얻은 카운트값을 이용하는 점이 다르다

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


public class Main {
    public static int getAlphabetCount(String str,char find){
        int count = 0;
        for(int i = 0; i<str.length(); i++){
            if(str.charAt(i)==find) count++;
        }
        return count;
    }
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str1 = br.readLine().toUpperCase();


        Character answer ='?';
        int max = 0;

        for(char c = 'A'; c <= 'Z'; c++){
            int cnt = getAlphabetCount(str1,c);
            if(max<cnt){
                max = cnt;
                answer = c;
            } else if(max==cnt){
                answer = '?';
            }
        }


        System.out.println(answer);

    }
}

 

 

배열을 잘 활용하거나 그때마다 검색하는 방법을 알았다