S E P H ' S

[코딩풀이] - BAEKJOON.1157 단어공부_JAVA 본문

Algorithm/BackJoon

[코딩풀이] - BAEKJOON.1157 단어공부_JAVA

yoseph0310 2021. 2. 18. 00:02


풀이방법

입력받은 문자열에서 가장 많이 입력된 알파벳을 출력하는 문제이다. 풀이법은 다음과 같다.

 

1. 알파벳 갯수 만큼의 1차원 배열 2개를 만든다.

     (가장 많이 입력된 알파벳이 여러개일 때를 비교해야 하므로 정렬시킬 배열, 알파벳을 셀 배열)

2. 정렬된 배열에서 마지막 인덱스의 값과 이전의 인덱스의 값이 같으면 '?'를 출력

3. 가장 많이 입력된 알파벳의 인덱스를 변수로 받고 출력

 

package BJ_문자열;

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

public class BJ_1157_단어공부 {
	
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String s = br.readLine();
		s = s.toUpperCase();
		
		int [] alphabet = new int[26];
		int [] Talphabet = new int[26];
		
		for (int i = 0; i < s.length(); i++) {
			int temp = s.charAt(i) - 'A';
			
			alphabet[temp] += 1;
			Talphabet[temp] += 1;
		}
		
		Arrays.sort(Talphabet);
		
		
		int max = 0;
		int count = 0;
		
		if ( Talphabet[25] == Talphabet[24]) {
			System.out.println("?");
		}
		else {
			for (int i = 0; i < alphabet.length; i++) {
				if ( max < alphabet[i]) {
					max = alphabet[i];
					count = i;
				}
			}
			count = count + 65;
			
			char answer = (char) count;
			System.out.println(answer);
		}
	}
}