[백준] 1157번 - 가장 많이나온 값의 알파벳 출력 (java)

팥빵·2025년 5월 27일

Baekjoon

목록 보기
16/49


>>문제 바로가기<<

문자열을 입력받고, 그 문자열에서 가장 많이 나온 단어를 출력하며, 만약 두 알파벳이 나온 숫자가 같다면 ?를 출력하는 문제이다.

char 자료형에 익숙하다면 무난하게 풀 수 있을것이다.

#방법1

기본적으론 가장 많이 나온 문자 둘을 비교하고,
여기에 추가적으로 그중 큰 숫자를 저장할 변수를 하나 더 만들면 해결된다.
평소에 char 자료형에 익숙하다면 기본적으로 생각할 수 있는 알고리즘이다.


toUpperCase()

여기에 추가로 해당 메소드를 사용하면 한층 더 간결해진다.
해당 메소드의 기능은
문자열의 모든 소문자 알파벳을 대문자로 변환해준다.

String s = "Hello World 1234 !@#$"
String upper = s.toUpperCase();
System.out.println(upper);
// HELLO WORLD 1234 !@#$ 출력

▲숫자와 공백 및 특수문자는 이에 영향받지 않는다.


따라서, 위 정보를 바탕으로 설계한 코드는 아래와 같다.


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

class Main{
	public static void main(String[] args) throws IOException{
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int[] arr = new int[26]; // 알파벳 26개
        String s = br.readLine().toUpperCase();
        
        for(int i=0; i<s.length(); i++){
        	char ch = s.charAt(i);
        	if(ch >= 'A' && ch <= 'Z'){
            	arr[ch - 'A']++;
            }
        }
        
        int max = -1; // 맨 처음 동작은 실행될 수 있도록
        char result = '?';
        for(int i=0; i<26; i++){
        	if(arr[i] > max){
            	max = arr[i]; // 현재까지의 가장 큰 값 저장
                result = (char)('A' + i);
            }
            else if(arr[i] == max){
            	result = '?';
            }
        }
        System.out.println(result);
        br.close();
    }
}

맞았습니다!!

profile
반갑습니다

0개의 댓글