View

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

 

1157번: 단어 공부

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

www.acmicpc.net

📚 문제

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

예제 입력 예제 출력
Mississipi ?
baaa A

 

💻 코드

  • 내 소스
import java.util.Scanner;

public class Main{
    public static void main(String args[]) {
        Scanner sc=new Scanner(System.in);
        String str=sc.next();
        char[] crr=str.toCharArray();
        char[] alpha= {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
        char[] Alpha= {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
        int [] num=new int[alpha.length];
        for(int i=0;i<alpha.length;i++) {
            num[i]=0;
        }
        
        for(int i=0;i<crr.length;i++) {
            for(int j=0;j<alpha.length;j++) {
                if(crr[i]==alpha[j]) {
                    num[j]+=1;
                    break;
                }
                if(crr[i]==Alpha[j]) {
                    num[j]+=1;
                    break;
                }
            }
        }
        
        int max=0;
        boolean check=false;
        
        for(int i=1;i<alpha.length;i++) {
            if(num[i]>num[max]) {
                max=i;
            }
            else if(num[i]==num[max]) {
                check=true;
            }
        }
        if(check==true) {
            System.out.println("?");        
        }else {
            System.out.println(Alpha[max]);
        }
        
    }
}
  • 풀이
package part1;

import java.util.Scanner;
public class BaekJoon{
    public static void main(String args[]) {
        Scanner sc=new Scanner(System.in);
        int[] cnt=new int[26]; //알파벳 카운트를 저장할 int 배열
        int max=0;             //가장 많이 나온 알파벳 수를 저장할 변수 
        char answer = '?';     // 정답을 저장하는 변수
        String word=sc.next().toUpperCase(); //단어를 입력받고, 모든 문자를 대문자로 바꾼다.
       
        for(int i=0;i<word.length();i++){    //문자열 길이만큼 반복
            cnt[word.charAt(i)-65]++;        //현재 알파벳을 알파벳카운트 배열 index에 +1한다.
            if(max<cnt[word.charAt(i)-65]) { //현재 알파벳 수가 max보다 크다면
                answer=word.charAt(i);       //정답에 현재 알파벳을 할당
                max=cnt[word.charAt(i)-65];  //max 변수에 현재 알파벳 수를 저장
            }
            else if(max==cnt[word.charAt(i)-65]) //만약 현재 알파벳 수가 max와 같다면
                answer='?';                      //정답에 '?'를 할당.
        }
        System.out.println(answer);
    }
}
 'A'-65 = 0
 'B'-65 = 1 을 이용하면 알파벳 순서대로 수열에 저장할 수 있다
728x90
Share Link
reply
«   2024/10   »
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