관리 메뉴

Just Do it

[백준/자바] 1157번: 단어 공부 본문

신입 개발자가 되기 위해 공부했던 독학 자료들/Java 연습문제 (백준)

[백준/자바] 1157번: 단어 공부

Seojoo21 2022. 2. 7. 00:04

1. 문제 

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

 

1157번: 단어 공부

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

www.acmicpc.net

 

2. 내 코드 

import java.io.*;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str = br.readLine();
		
		
		//1. 알파벳 배열 생성 
		int[] arr = new int[26];
		
		
		//2. 입력되는 문자열의 문자를 검사해 대소문자에 상관없이 알파벳 배열에 사용된 알파벳의 개수를 넣는다. 
		for(int i=0; i<str.length(); i++ ){
			if ('A' <= str.charAt(i) && str.charAt(i) <= 'Z') { // 대문자 범위 
				arr[str.charAt(i) - 'A']++;
			} else { // 소문자 범위 
				arr[str.charAt(i) - 'a']++;
			}
		}	
			
		int max = -1; // 사용된 알파벳 개수는 0 이상이므로 최댓값을 -1로 둔다. 
		char ch = 0;
			
		for (int i=0; i<arr.length; i++) {
			if (max < arr[i]) {
				max = arr[i];
				ch = (char)(i+65); // 대문자로 출력해야하므로 65를 더해준다. 
			} else if (max == arr[i]) {
				ch ='?';
			}
		}
		System.out.println(ch);
	}
}

 

3. 다시 체크하고 넘어갈 부분 

1. 아스키 코드

소문자 a = 97

대문자 A = 65