Programmers - 옹알이 (2)

So'sCode·2024년 1월 11일
0

프로그래머스 - Lv1.

목록 보기
18/20

문제 설명📖

머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.

제한사항🔐

  • 1 ≤ babbling의 길이 ≤ 100
  • 1 ≤ babbling[i]의 길이 ≤ 30
  • 문자열은 알파벳 소문자로만 이루어져 있습니다.

코드🔑

function solution(babbling) {
    let answer = 0;
    let announce = ['aya','ye','woo','ma'];

    for(let i of babbling){
        let babble = i;
        for(let x of announce){
            if(babble.includes(x.repeat(2))) break;
            babble = babble.split(x).join(' ');
        }
        babble.split(' ').join('').length === 0 ? answer++ : answer+=0;
    }
    return answer;
    
}
  • 주어진배열내의 말들과 머쓱이가 할 수 있는 말들을 각각 비교해야했기 때문에 이중 포문을 사용
  • 문제 내에 같은 문자열 두번이상 반복하면안된다고 했기에 조건문을 걸어줌
  • 처음에 계속 split해서 그냥 while문을 사용할까 했는데..? 각이 도저히 안나왔다..
    • 그래서 생각한 다른 코드 babble = babble.split(x).join(' ');
  • 이렇게 쪼개둔 문자를 포문밖에서 다시한번 공백으로 나눈후 ( 이렇게 나눈 후 조인하면 길이가 0 이되기 때문에 잘 나누어졌는지 확인할 수 있음 )
  • 그래서 길이가 0 이면 announce내에서 잘 이리 저리 말을 조합해서 사용했다는 것으로 파악하여 return 값인 정답을 ++ 해주었음

정리📚

사실 아 split을 사용해서 계속 반복하다보면 될텐데 라는 생각이 머리속에 있었는데 이 생각을 충족시켜줄만한 코드가 나오지 못했다... 결국 찾아보고 나머지 필요한 코드를 채웠는데 이런 부분을 새로 배웠으니 다음에는 이런 부분을 기억했다 풀었으면 좋겠다!

if(babble.includes(x.repeat(2))) break; 그리고 이런 조건 부분들은 문제를 잘읽고 놓치지않고 파악하는 것이 중요한것같다~

profile
이왕하는거미루지말고하자.

0개의 댓글