백준 알고리즘

6. 심화 1 - 6 (1157번)

IT의 큰손 2023. 3. 19. 09:55
728x90

★ 문제

  • 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
  • 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.

 

★ 소스코드

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		
		HashMap <Character , Integer> map = new HashMap<Character, Integer>();
		
		char alpha = 'A';
		int plus = 0;
		int max = 0;
		int max2 = 0;
		char win = 0;
		
		
		String input = scan.next();
		
		for(int i=0; i<input.length(); i++) {
			
			char c = 0;
			if('a'<=input.charAt(i)&&input.charAt(i)<='z') {
				int num = input.charAt(i)-32;
				c = (char)num;
			}else {
				c = input.charAt(i);
			}
			
			if(map.containsKey(c)) {
				map.replace(c, map.get(c)+1);
			}else {
				map.put(c, 1);
			}	
		}
		
		for(Entry<Character, Integer> entry : map.entrySet()) {
			
			if(max<entry.getValue()) {
				max = entry.getValue();
				win = entry.getKey();
			}else if(max==entry.getValue()) {
				max2 = max;
			}
			
			
		}
		if(max2 == max) {
			System.out.println("?");
		}else {
		System.out.println(win);
		}
		
	}

}
728x90