Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 피카츄 (14405) (자바/Java) 본문

알고리즘문제/백준 문제(Java)

[백준] - 피카츄 (14405) (자바/Java)

luke-king 2024. 4. 18. 18:11

 

 

 

 

 

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

 

14405번: 피카츄

피카츄는 "pi", "ka", "chu"를 발음할 수 있다. 따라서, 피카츄는 이 세 음절을 합친 단어만 발음할 수 있다. 예를 들면, "pikapi"와 "pikachu"가 있다. 문자열 S가 주어졌을 때, 피카츄가 발음할 수 있는 문

www.acmicpc.net

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

풀이.


 

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        String[] chk = {"pi", "ka", "chu"};

        int res = 0;
        while (true) {
            for (int i = 0; i < chk.length; i++) {

                if (str.indexOf(chk[i]) == 0) {
                    str = str.substring(chk[i].length());
                    res = 1;
                }

            }
            if(res == 0) break;

            res = 0;
        }

        if (str.equals("")) {
            System.out.println("YES");
        }else{
            System.out.println("NO");
        }

    }

}

 

피카츄 문제! 문자열 문제만 나오면 괜히 겁부터 먹게 되는.... 하지만 꾹 참고 문제를 풀어봤다..!!

이번 문제는 입력받은 문자열을 "pi", "ka", "chu"로 이어 붙여서 만들어지면 YES, 그렇지 않으면 NO 가 출력 되어야 한다.

바로 풀이 설명 해보겠다.

 

1. "pi", "ka", "chu"를 담고 있는 배열을 생성해준다.

 

2. res 변수는 입력받은 문자를 조건에 충족하도록 루프를 돌리도록 0이면 break 그렇지 않으면 루프를 돌리게 해 준다.

 

3. str.indexOf(chk [i]) : 입력받은 문자열을 배열 인덱스에 있는 값들을 맞춰 맞을 경우 0의 값이 나온다.

 

4. str을 substring(chk [i]. length()); 로 입력값이 pikachu 라면 첫 " pi "가 맞으므로 다음 조건을 돌 땐 kachu가 나오게끔 문자열을 잘라준다.

 

5. 그렇게 되면 모든 입력값이 이어진다면 빈 공백을 출력하므로 YES 가 나오며 그렇지 않을 경우 NO 가 나오게 된다.