1157 단어 공부 [문자열 / Bronze 1]

최유연·2021년 9월 5일
0

📋 문제 :

1157 단어 공부

💡 풀이 설명 :

파이썬 풀이 설명 :

알파벳 사용 빈도를 저장하기 위한 리스트를 선언한다.
대소문자를 구분하지 않으므로 입력된 단어를 모두 대문자로 바꿔준다.
For문을 돌며 입력된 단어의 각 문자별 사용 빈도를 세어준다.
이때 가장 많이 사용된 알파벳이 여러 개 일 땐 ?을 출력해야 하므로 알파벳 사용빈도가 저장된 배열을 내림차순으로 정렬 후, 첫번째와 두번째의 원소가 같으면 ?를 출력하고
그렇지 않을 경우엔 가장 많이 사용된 알파벳을 출력한다.

자바 풀이 설명 :

알파벳 사용 빈도를 저장하기 위한 리스트를 선언한다. 입력된 단어를 모두 대문자로 바꿔준 후,
For문을 돌며 입력된 단어의 각 문자별 사용 빈도를 세어준다.
이번엔 가장 많이 사용된 알파벳을 for문을 돌면서 구하는데, 가장 많이 사용된 알파벳이 새로 등장할 때마다 answer을 해당 알파벳으로 갱신해준다. 만일 최고 빈도수가 동일한 알파벳이 등장할 경우 answer는 ?로 갱신한다.
For문을 마치고 나면 answer를 출력해준다.

💻 코드 :

python


if __name__ == '__main__':
    alpha = [0]*26
    s = input()
    s = s.upper()

    for i in s:
        alpha[ord(i)-65] += 1

    tmp = sorted(alpha, reverse=True)
    if tmp[0] == tmp[1]:
        print("?")
    else:
        print(chr(alpha.index(max(alpha))+65))

java

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

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[26];
        String S = sc.next().toUpperCase();
        int max = -1, idx = 0;
        char answer = '?';

        for(int i = 0; i<S.length();i++){
            int tmp = S.charAt(i)-65;
            arr[tmp]++;
            if(max<arr[tmp]){
                max = arr[tmp];
                answer = S.charAt(i);
            }
            else if(max==arr[tmp]){
                answer = '?';
            }
        }
        System.out.println(answer);
    }
}
profile
프론트엔드 도메인 지식을 지닌 백엔드 개발자로 성장하기 위한 기록

0개의 댓글