1 분 소요

사용 언어: Java

문제

단어 공부

풀이

나의 풀이

자바

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));

        int[] cnt = new int[91]; // Z = 90
        String S = in.readLine();
        for (char c : S.toCharArray()) { // 개수 세기
            cnt[(int)Character.toUpperCase(c)] += 1;
        }

        int max = -1;
        for (int i=65; i<91; i++) { // 최댓값 찾기
            if (cnt[i] > max) max = cnt[i];
        }

        ArrayList<Character> ans = new ArrayList<>();
        for (int i=65; i<91; i++) {
            if (cnt[i] == max) ans.add((char)i);
        }

        if (ans.size() != 1) {
            out.write("?");
        } else {
            out.write(String.valueOf(ans.get(0)));
        }

        out.close();
        in.close();
    }
}
  • 테스트 케이스: 성공
  • 제출 결과: 성공

다른 풀이

자바

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));

        int[] cnt = new int[91]; // Z = 90
        String S = in.readLine();
        for (char c : S.toCharArray()) { // 개수 세기
            cnt[(int)Character.toUpperCase(c)] += 1;
        }

        int max_idx = 65; // ✅ 최댓값의 인덱스
        for (int i=65; i<91; i++) {
            if (cnt[i] > cnt[max_idx]) max_idx = i;
        }
        
        boolean flag = false;
        for (int i=65; i<91; i++) {
            // ✅ max와 값이 같으면서 인덱스는 다르면 최댓값이 두 개 이상인 것
            if (cnt[i] == cnt[max_idx] && i != max_idx) { // ✅ 여기서 i != max_idx 를 체크하기 위해 '최댓값'이 아닌 '최댓밗의 인덱스'를 구해놓은 것
                out.write("?");
                flag = true;
                break;
            }
        }
        if (!flag) {
            out.write(String.valueOf((char)max_idx));
        }
        out.close();
        in.close();
    }
}
  • 테스트 케이스: 성공
  • 제출 결과: 성공


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기