[백준] 9046번 복호화 - Java, 자바

난이도

브론즈 1

문제

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

풀이

  1. 문자열을 입력받는다.
  2. 문자열을 반복문 돌려 문자하나하나 체크한다. 문자가 a~z이면 1차원 배열(result)에서 개수 카운트
  3. max값 구한다.
  4. max값과 일치하는 1차원 배열 원소가 있을 때, count 세주고, answer에 원소를 저장한다.
  5. count가 1이면 answer를 출력하고 아니라면 ?를 출력한다.

코드


package 문자열;

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

public class BOJ9046 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());
        while (n-- > 0) {
            String input = br.readLine();
            int[] result = new int[26];
            for (int i = 0; i < input.length(); i++) {
                if (input.charAt(i) >= 'a' && input.charAt(i) <= 'z') {
                    result[input.charAt(i) - 'a']++;
                }
            }

            int max = 0;
            for (int r : result) {
                if (r > max) {
                    max = r;
                }
            }

            int count = 0;
            int answer = 0;
            for (int j = 0; j < 26; j++) {
                if (max == result[j]) {
                    count++;
                    answer = j;
                }
            }

            System.out.println(count == 1 ? (char) (answer + 'a') : "?");
        }
    }
}

좋은 웹페이지 즐겨찾기