티스토리 뷰

문제

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

입력

첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.

출력

첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

예제 입력 

Mississipi

예제 출력 

?

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package string;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.StringTokenizer;
 
/**
 * https://www.acmicpc.net/problem/1157
 * 단어 공부
 * @author minjung
 * 아스키 코드 사용
 */
public class baekjoon_1157 {
    
    private void solve(String word){
        word = word.toLowerCase(); // 소문자로 변환
        
        int[] ascii = new int[26]; // 입력받은 문자열 저장
        
        forint i = 0; i < word.length(); i++ ){
            ascii[word.charAt(i) - 97]++// 소문자 a는 97이므로 97을 빼면 a부터 차례대로 배열에 할당
        }
        
        int max = 0;
        boolean isMany = false// 
        int result = 0// 가장 많이 쓰인 알파벳의 아스키값 저장
        
        forint i = 0; i < 26; i++ ){
            if ( max < ascii[i]) {
                result = i + 97;
                max = ascii[i];
                isMany = false;
            }
            else if( max == ascii[i] ) {
                isMany = true;
            }
        }
        
        if( isMany ) {
            System.out.println("?");
        }
        else {
            System.out.println((char)(result - 32)); // 아스키값을 대문자로 변환 후 출력
        }
 
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        sc.init();
        
        String word = sc.readLine();
        new baekjoon_1157().solve(word);
    }
    
    static class sc { 
        private static BufferedReader br;
        private static StringTokenizer st;
        
        static void init() {
            br = new BufferedReader(new InputStreamReader(System.in));
            st = new StringTokenizer("");
        }
        
        static String readLine() {
            try{
                return br.readLine();
            } catch (IOException e){
                e.printStackTrace();
            }
            return null;
        }
        
        static String next() {
            while (!st.hasMoreTokens() ){
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e){
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }
        
        static long nextLong() {
            return Long.parseLong(next());
        }
        
        static int nextInt() {
            return Integer.parseInt(next());
        }
        
        static double nextDouble() {
            return Double.parseDouble(next());
        }
        
    }
 
}
 
cs


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함