알고리즘/백준 알고리즘

[java] 백준 알고리즘 1157번 단어공부 풀이

희랍인 조르바 2018. 5. 23. 16:50




* 풀이 소스


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
public class Baekjoon1157 {
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        String word = br.readLine().toUpperCase(); // 입력되는 문자 모두 대문자로 변환
        boolean flag = true// 가장 많이 사용한 단어가 단수인지 복수인지 구분
        int[] mostUsedAlphabet = new int[26];
        
        for(int i=0; i<word.length(); i++) {
            
            mostUsedAlphabet[word.charAt(i) - 65+= 1// 해당 문자가 나올 때마다 1씩 올라감
        }
        
        int max = 0;
        int maxIndex = 0;
        int duplicateMax = 0;
        for(int j=0; j<mostUsedAlphabet.length; j++) {
            
            if(max < mostUsedAlphabet[j]) { // 가장 큰 값이 계속 업데이트 됨
                max = mostUsedAlphabet[j];
                maxIndex = j; // 가장 큰 값이 있는 배열 인덱스
            }else if(max == mostUsedAlphabet[j]) {
                duplicateMax = max; // 최대값이 중복되는지 체크하기 위함
            }
        }
        
        if(duplicateMax == max) { // 최대값이 복수면 false
            flag = false;
        }
        
        if(flag) {
            bw.write((char)(maxIndex+65)); // 아스키 코드 변환
        }else {
            bw.write("?");
        }
        bw.flush();
        
    }    
}
 
cs