백준 - 4659 비밀번호 발음

류희수·2024년 12월 20일

코딩 테스트

목록 보기
4/5

티어 : 실버 4

if문이 많이 들어가서 조금 복잡하게 푼 것 같다.
조건 3개를 boolean 으로 두고 차근차근 찾아가니 어렵지 않게 풀었다

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

public class Main {
    public static void main(String[] args) throws IOException {

        /**
         * 모음(a,e,i,o,u) 하나를 반드시 포함하여야 한다.
         * 모음이 3개 혹은 자음이 3개 연속으로 오면 안 된다.
         * 같은 글자가 연속적으로 두번 오면 안되나, ee 와 oo는 허용한다.
         */

        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

        while(true) {
            String alpa = bufferedReader.readLine();
            if(alpa.equals("end")) break;

            int gather = 0; // 모음
            int consonant = 0; // 자음
            boolean first = false;
            boolean second = true;
            boolean third = true;

            for (int i = 0; i < alpa.length(); i++) {
                if(alpa.charAt(i) == 'a' || alpa.charAt(i) == 'e' ||alpa.charAt(i) == 'i'
                        ||alpa.charAt(i) == 'o' ||alpa.charAt(i) == 'u'){
                    first = true;
                    gather++; // 모음 카운트 + 1
                    consonant = 0; // 자음 초기화
                    if(gather >= 3) second = false;
                } else{
                    consonant++; // 자음 + 1
                    gather = 0; // 모음 초기화
                    if(consonant >= 3) second = false;
                }
                if (i >= 1) {
                    if (alpa.charAt(i) != 'e' && alpa.charAt(i) != 'o') {
                        if (alpa.charAt(i) == alpa.charAt(i - 1)) {
                            third = false;
                        }
                    }
                }
            }
            if (first && second && third) {
                System.out.println("<" +alpa +"> " + "is acceptable.");
            }
            else
                System.out.println("<" +alpa +"> " + "is not acceptable.");
        }
    }
}
profile
자바를자바

0개의 댓글