[백준] 1157 : 단어 공부 - Java

길 잃은 까마귀·2022년 9월 14일
0

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


  • 문제

  • 풀이
    각각의 알파벳을 입력받는 방법만 안다면 쉬운 문제이다. 내가 이 문제를 처음 풀때는 소문자와 대문자를 받을때를 따로 생각해서 어렵다고 생각했었는데 아스키코드값을 이용하면 굉장히 쉬운 문제다. 문자열파트는 아스키코드를 이용하는 경우가 빈번해서 찾아서 공부하는것도 좋다. 풀이를 하면 알파벳 크기의 배열을 만든다.
    그리고 문자열을 입력받아 각각의 문자를 판별하는데 소문자면, 즉 범위가 a~z이면 전에 했던 것처럼 'a'를 빼줌으로서 알파벳의 위치를 알 수 있다. 그런데 만약 대문자면 똑같이 'A'를 뻬주어서 위치를 판별할 수 있다. 이렇게 배열을 채우고 나면 처음부터 끝까지 배열을 비교하면 된다.

  • 코드
import java.io.*;
import java.util.*;

class Main {
	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int cnt[] = new int[26];
		String s = br.readLine();

		for (int i = 0; i < s.length(); i++) {
			if (s.charAt(i) >= 'a' && s.charAt(i) <= 'z') {
				cnt[s.charAt(i) - 'a']++;
			} else {
				cnt[s.charAt(i) - 'A']++;
			}
		}
		int max = -1;
		char c = '?';
		for (int i = 0; i < 26; i++) {
			if (cnt[i] > max) {
				max = cnt[i];
				c = (char) (i + 65);
			} else if (cnt[i] == max) {
				c = '?';
			}
		}
		System.out.println(c);
	}
}
profile
코딩 고수가 될 사람

0개의 댓글