ν•΄λ²„λ‹ˆ 2023. 11. 18. 16:29
λ°˜μ‘ν˜•

 

 

 

문제 

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

 

9046번: λ³΅ν˜Έν™”

μž…λ ₯의 T(1 ≤ T ≤ 20)λŠ” ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ‘œ, μž…λ ₯ 제일 상단에 주어진닀. 각각의 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λŠ” ν•œ μ€„λ§ˆλ‹€ μ†Œλ¬Έμžμ™€ 곡백으둜 이루어진 μ˜μ–΄ λ¬Έμž₯이 주어진닀. 이 λ¬Έμž₯의 κΈΈμ΄λŠ” 적어도 1이상이

www.acmicpc.net

 

 

 

 

 

 

 

 

 

 

 

 

 

풀이

 

μ˜μ–΄ μ•ŒνŒŒλ²³μ€ 총 26κ°œμ΄λ―€λ‘œ 26개의 배열을 μ„ μ–Έν•΄μ€€λ‹€.

String을 ν•œ κΈ€μžμ”© μž˜λΌμ„œ (int) input.charAt(i)둜 숫자둜 λ³€ν™˜ν•΄μ€€λ‹€.

aλŠ” 97, bλŠ” 98, cλŠ” 99 .... μ΄λ―€λ‘œ 

(숫자둜 λ³€ν™˜) - 97을 ν•΄μ„œ 배열에 index 0λΆ€ν„° μ°¨λ‘€λŒ€λ‘œ +1을 ν•΄μ€€λ‹€.

 

그리고 μ΅œλŒ“κ°’μ„ κ΅¬ν•œλ‹€.

 

λ‹€μŒμœΌλ‘œλŠ” μ΅œλŒ“κ°’μ΄ ν•˜λ‚˜μΈμ§€ κ²€μƒ‰ν•œλ‹€.

ν•˜λ‚˜μ΄λ©΄ κ·Έ λ¬Έμžμ—΄μ„ 좜λ ₯ν•˜κ³ , μ•„λ‹ˆλΌλ©΄ ?을 좜λ ₯ν•œλ‹€.  

 

package algorithm;

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

public class Main {
    // ν•΄λ…ν•˜λŠ” ν•¨μˆ˜
    public char decode(String input) {
        int[] number = new int[26]; // μ˜μ–΄ μ•ŒνŒŒλ²³μ€ 26개

        for (int i = 0; i < input.length(); i++) {
            char search = input.charAt(i);

            if ((int) search != 32) { // μ•„μŠ€ν‚€μ½”λ“œλŠ” a=97 μ΄λ―€λ‘œ 97λ₯Ό λΉΌμ„œ ν•΄λ‹Ήν•˜λŠ” 값을 ν•˜λ‚˜μ”© μ¦κ°μ‹œν‚¨λ‹€.
                number[((int) search) - 97]++;
            }
        }

        int check = 0;
        int max = 0;
        int index = -1;

        for (int i = 0; i < number.length; i++) { // μ΅œλŒ“κ°’κ³Ό κ·Έλ•Œμ˜ indexλ₯Ό κ΅¬ν•˜κΈ°
            if (max < number[i]) {
                max = number[i];
                index = i;
            }
        }

        for (int i = 0; i < number.length; i++) { // λ§Œμ•½ μ΅œλŒ“κ°’μ΄ μ—¬λŸ¬κ°œλΌλ©΄ check++λ₯Ό ν•΄μ£ΌκΈ°
            if (max == number[i]) {
                check++;
            }
        }

        // check=1이면 maxκ°€ 1, μ•„λ‹ˆλΌλ©΄ 2 이상이닀.
        return check > 1 ? '?' : (char) (index + 97);
    }



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

        int num = Integer.parseInt(br.readLine());
        char[] answer = new char[num];
        Main m = new Main();

        for (int i = 0; i < answer.length; i++) {
            String input = br.readLine();
            answer[i] = m.decode(input);
        }

        for (int i = 0; i < answer.length; i++) {
            System.out.println(answer[i]);
        }

    }
}

 

 

 

 

 

 

 

 

μ •λ‹΅ 

 

 

 

 

 

 

λ°˜μ‘ν˜•