본문 바로가기
개발로그/알고리즘

프로그래머스 Lv.0 옹알이(1)

by 쩜징 2023. 7. 30.

프로그래머스 Lv.0 옹알이(1)


머쓱이는 태어난 지 6개월 된 조카를 돌보고 있다.

조카는 "aya", "ye", "woo", "ma"

네 가지 발음을 최대 한 번씩 조합한 발음밖에 못 한다.

문자열 배열 babbling이 매개 변수로 주어진다.

이 중에서 머쓱이의 조카가 발음할 수 있는

단어의 개수를 return하라.

babbling result
["aya", "yee", "u", "maa", "wyeoo"] 1
["ayaye", "uuuma", "ye", "yemawoo", "ayaa"] 3

** 풀이 방법

 

발음할 수 있는 단어를 배열로 만든다.

String[] ong = {"aya", "ye", "woo", "ma"};

 

babbling에서 ong배열에 있는 단어가 있다면그 단어를 "O"로 바꾼다.

 for (int i=0; i<babbling.length; i++) {
    for (int j=0; j<ong.length; j++) {
        if (babbling[i].contains(ong[j])) 
            babbling[i] = babbling[i].replace(ong[j], "O");
    }
}

 

이중 반복문을 통해

babbling 각 문자열에 접근하고

또 그 문자열에 하나하나씩 접근한다.

모든 문자열이 "O"로 되어있다면

flag를 true로 저장하고,하나라도 "O"가 아니면 false로 저장하고반복문을 끝낸다.flag가 true인 개수를 구한다.

for (int i=0; i<babbling.length; i++) {
    for (int j=0; j<babbling[i].length(); j++) {
        res = babbling[i].substring(j, j+1);
        System.out.print(res);
        if (res.equals("O")) 
            flag = true;
        else {
            flag = false;
            break;
        }
    }
    if (flag) answer++;
    System.out.println();
}

 

"O"로만 되어있는 문자열이 3개!

테스트 케이스에 출력 결과를 보면 이해가 더 빠를 것이다.

 

<> 전체 코드 </>

class Solution {
    public int solution(String[] babbling) {
        String[] ong = {"aya", "ye", "woo", "ma"};
        int answer = 0; String res = ""; boolean flag = false;
        for (int i=0; i<babbling.length; i++) {
            for (int j=0; j<ong.length; j++) {
                if (babbling[i].contains(ong[j])) 
                    babbling[i] = babbling[i].replace(ong[j], "O");
            }
        }
        for (int i=0; i<babbling.length; i++) {
            for (int j=0; j<babbling[i].length(); j++) {
                res = babbling[i].substring(j, j+1);
                System.out.print(res);
                if (res.equals("O")) 
                    flag = true;
                else {
                    flag = false;
                    break;
                }
            }
            if (flag) answer++;
            System.out.println();
        }
        return answer;
    }
}

반응형

댓글