1일 1백준

1일 1백준 : 7일차 1157번 단어 공부

gaonhae 2022. 4. 25. 12:44

1일 1백준 7일차 두 번째, 오늘 푼 문제는 1157번 문제인 "단어 공부"이다.

 

 

 

 

https://www.acmicpc.net/problem/4344

 

 

 

이번에 짠 코드는 개인적으로 마음에 들지 않는다

아스키코드를 다루는 것이 익숙하지 않아서인지 시간도 많이 걸렸고 코드도 많이 지저분하다

더 개선할 여지가 있는 것 같으면서도 방법이 빨리 떠오르지는 않았다

역시 갈 길이 멀었다

 

 

 

 

 

 

 

 

 

 

 

 

아래로 내리면 정답 코드가 나옵니다. 문제를 아직 풀지 않으신 분들은 주의해주세요.

 

 

 

 

 

 

 

 

 

 

 

 

import java.util.Scanner;
import java.util.Arrays;

class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Func f = new Func();
        
        int[] alphabet = new int[26];
        String inputword = sc. next().toLowerCase();    //문자열을 전부 소문자로 만들어 처리를 용이하게 함

        System.out.println(f.count(alphabet, inputword));

        sc.close();
    }

}

class Func{
    char count(int[] arr, String word){

        int big = 0;  
        int count = 0;

        for(int a = 0 ; a < word.length() ; a++){       //알파벳이 나올 때마다 각 번째의 배열 값 ++
            arr[(int)(word.charAt(a)) - 96 -1] ++;
        }

        for(int a = 0 ; a < arr.length ; a++){          //알파벳 배열을 돌면서 최댓값 찾기
            if(arr[a] >= arr[big]){
                big = a;
            }
        }

        for(int a = 0 ; a < arr.length ; a++){          //최댓값과 같은 값이 있는지 검사
            if(arr[a] == arr[big]){
                count++;
            }
        }

        if(count >= 2){
            return (char)63;        //물음표 출력
        }
        else{
            return (char)(65 + big);
        }
    }
}