백준 창영이의 일기장

KIMYEONGJUN·2025년 4월 29일
0
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에 알파벳 소문자와 공백으로만 이루어진 문장이 하나 주어진다.
모든 단어는 공백 하나로 구분되어져 있다.
문장의 길이는 최대 100이다.

첫째 줄에 창영이가 일기장에 작성한 문장을 원래 문장으로 바꾸어 출력한다.

내가 이 문제를 보고 생각해본 부분

BufferedReader를 사용하여 표준 입력으로부터 인코딩된 문장을 읽어온다.
디코딩된 문장을 저장할 StringBuilder를 생성해준다.
인코딩된 문장의 각 문자를 순회한다.
isVowel 헬퍼 함수를 사용하여 현재 문자가 모음인지 확인한다.
만약 현재 문자가 모음(a, e, i, o, u)이라면, 디코딩된 문자열에 해당 모음을 추가한다.
그리고 인코딩 규칙에 의해 모음 뒤에 오는 'p'와 원래 모음은 건너뛰기 위해 인덱스 i를 2만큼 증가시킨다.
모음이 아니라면 (자음 또는 공백), 해당 문자를 디코딩된 문자열에 그대로 추가한다.
모든 문자를 순회한 후, StringBuilder에 저장된 최종 디코딩된 문장을 출력한다.

코드로 구현

package baekjoon.baekjoon_28;

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

// 백준 26068번 문제
public class Main1007 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String encodedSentence = br.readLine();
        StringBuilder sb = new StringBuilder();

        // 입력 문자열을 순회하며 디코딩합니다.
        for(int i = 0; i < encodedSentence.length(); i++) {
            char currentChar = encodedSentence.charAt(i);

            // 현재 문자가 모음인지 확인합니다.
            if(isVowel(currentChar)) {
                // 모음이면 해당 모음을 결과 문자열에 추가합니다.
                sb.append(currentChar);
                // 인코딩 규칙에 따라 모음 뒤에 오는 'p'와 해당 모음 문자는 건너뜁니다.
                i += 2;
            } else {
                // 모음이 아니면 (자음 또는 공백) 해당 문자를 결과 문자열에 추가합니다.
                sb.append(currentChar);
            }
        }

        // 디코딩된 문장을 출력합니다.
        System.out.println(sb.toString());
        br.close();
    }

    // 주어진 문자가 모음인지 확인하는 헬퍼 함수입니다.
    private static boolean isVowel(char c) {
        return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글