[백준1157] 단어 공부

yoontaeng·2022년 10월 24일
0
post-thumbnail

📎 문제링크

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

📄 문제설명

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

제한사항

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

📝 문제풀이

charAt()함수로 문자열을 하나씩 분리하여 26개의 count 함수에 집어넣고 최대값을 구하는 과정을 통해서 계속 최대값을 갱신.

💡 Code

초기코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
	static String s;
    static String r_s;
    static int count[];
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         s=br.readLine();
         r_s=s.toUpperCase(); // 대문자 변환
         count=new int[26];  // 알파벳 순서로 배열 생성 // 배열안에 알파벳 개수만큼 값 저장
         
         for(int i=0;i<s.length();i++) {
        	 
        	 char a=r_s.charAt(i);  // 입력받은 문자열 문자 하나하나씩 잘라서 a에 저장
        	 int n=a-65;   //아스키 코드 A=65이므로 알파벳 순서대로 배열에 저장 가능
        	 count[n]++;    //count배열 증가
                     
          }
         int max=0;
         char ans=' ';
         for(int i=0;i<26;i++) { // 최대값 구하기
        	 if(max<count[i]) {   //A~Z까지 비교하면서 최대값 갱신
        		 max=count[i];
        		 ans=(char) (i+65);  
        	 }else if(max==count[i]) {   // 개수가 같은 알파벳이 여러개있으면 출력은 ? 로 나온다
        		 ans='?';  
        	 }
        	 
        	 
        	 
         }
         
         System.out.println(ans);  //정답 출력
	}
}

👍 Comment

아스키 코드 사용으로 문자를 정수의 형태로 변환

profile
병아리개발자

0개의 댓글