"꾸준하고 완벽한 한 걸음"

PS/Baekjoon Online Judge

[백준 28125] 2023 아주머학교 프로그래딩 정시머힌 [Java]

kimyoungrok 2025. 5. 5. 21:52
728x90

문제

28125번: 2023 아주머학교 프로그래딩 정시머힌

 

28125번: 2023 아주머학교 프로그래딩 정시머힌

 

boj.ma

 


풀이

주어진 문자열에 대해 규칙대로 철자를 바꾸는 문제다.

철자를 바꾼 횟수가 철자를 바꿔 만들어진 문자열 길이의 절반보다 크다면, 해석을 포기한다.

우선 문제에서 주어진 철자 변환 규칙을 맵에 등록했다. 선택사항이다.

        // Input
        int T = Integer.parseInt(br.readLine());
        HashMap<Character, Character> map = new HashMap<>();
        map.put('@', 'a');
        map.put('[', 'c');
        map.put('!', 'i');
        map.put(';', 'j');
        map.put('^', 'n');
        map.put('0', 'o');
        map.put('7', 't');

입력 S를 순회하며 주어진 규칙에 있는 철자라면 변환을, 아니라면 그냥 추가해준다.

            int cnt = 0;
            for (int i = 0; i < S.length; ++i) {
                if (map.containsKey(S[i])) {
                    word.append(map.get(S[i]));
                    ++cnt;
                } else if (S[i] == '\\\\') {
                    if (i + 1 < S.length && S[i + 1] == '\\'') {
                        word.append('v');
                        ++i;
                        ++cnt;
                    } else if (i + 2 < S.length && S[i + 1] == '\\\\' && S[i + 2] == '\\'') {
                        word.append('w');
                        i += 2;
                        ++cnt;
                    }
                } else {
                    word.append(S[i]);
                }
            }

철자를 변환할 때마다 변환 횟수를 누적했으므로, 변환이 완료된 문자열의 길이와 비교해보자. 해석을 포기해야 한다면 word가 아니라 “I don't understand”를 출력하자.

            if (cnt * 2 >= word.length()) {
                sb.append("I don't understand\\n");
            } else {
                sb.append(word).append("\\n");
            }
        }

        // Output
        System.out.println(sb);
    }
}

풀이 시간

10분


소스코드

https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/easy/28125.java

 

problem-solving/baekjoon-online-judge/easy/28125.java at main · rogi-rogi/problem-solving

Daily Problem Solving Challenges. Contribute to rogi-rogi/problem-solving development by creating an account on GitHub.

github.com

 

728x90