Suzie's Blog

[프로그래머스] 옹알이 (JavaScript) 본문

개발/코딩테스트

[프로그래머스] 옹알이 (JavaScript)

Iuna 2025. 1. 15. 10:09
반응형
SMALL

생각흐름 정리

15 Jan 2025

- 배열이 2개, 포함되는가 ? 흠.. for문을 두번 돌려야하나? 아니면 일단.. 메서드는 includes, filter로 첫번째 필터는 가능할 것 같은데

처음에 필터해서 babbling이 포함되는 단어를 filter 하고 나서 그 뒤에 어떻게 접근해야할까

filter된 배열에서 흠... 아 배열안의 엘리먼트를 또 배열로 쪼개는 방법을 사용하면 되려나? 예를들어 aya를 기점으로 split해보는거지

 

16 Jan 2025

- 답을 보고 이해하고 다시 풀어보는게 더 나을것 같았다. 그래서 Chat GPT에게 풀이 방법을 설명해달라고 부탁했다

function solution(babbling) {
    // 조카가 발음할 수 있는 단어 목록
    const validWords = ["aya", "ye", "woo", "ma"];
    
    // 발음 가능한 단어 개수를 저장하는 변수
    let count = 0;

    // 배열을 하나씩 검사
    for (let word of babbling) {
        let isValid = true; // 이 단어가 유효한지 확인
        for (let valid of validWords) {
            // valid 단어를 " "로 바꿔가며 제거
            word = word.split(valid).join(" ");
        }

        // 남아 있는 글자가 있으면 유효하지 않음
        if (word.trim() !== "") {
            isValid = false;
        }

        // 같은 단어가 연속으로 나오면 유효하지 않음
        for (let valid of validWords) {
            if (word.includes(valid + valid)) {
                isValid = false;
            }
        }

        // 유효하면 count를 증가
        if (isValid) {
            count++;
        }
    }

    return count; // 발음 가능한 단어의 개수 반환
}

역시나 AI는 창의적이다. split을 이용해서 같은 단어가 있으면 빈값처리되는걸 이용. 이걸 반복해서 빈값은 isValid 가 true가 되고 값이 있거나 같은 단어가 연속으로 나오는경우 false처리를 해주어 true만 카운트를 올려 return 하는 방식!

이 부분을 참고로 해서 보지 않고 나 혼자 풀 수 있게 연습해야겠다!

// 20 Jan 2025 업데이트

더 간단한 풀이 방법 찾아서 공유한다 😁

 

const solution = (babbling: string[]) => {
    const validWords = ["aya", "ye", "woo", "ma"];
    let count = 0;

    for (let word of babbling) {
      for (const sound of validWords) {
        if (word.includes(sound)) {
          word = word.replace(sound, " ");
        }
      }
      if (word.trim() === "") {
        count++;
      }
    }
    return count;
  };

for 2번 돌리고 let word를 replace 로 업데이트하고 replace 시, " " 스페이스가 들어간 공백으로 하는게 포인트!

스페이스를 해주지 않으면 원래있던 글자들이 없어지고 겹쳐지면서 validWords에 다시 속하는 경우가 발생하기 때문.

이렇게 하면 굳이 isValid 만들 필요없이 조건 해당하면 바로 count 올려주는걸 추가하여 정답 도출 가능!

 

옹알이 뭔가 진짜 쉬워보이면서 쉽지않았지만 뭔가 많이 알아갈 수 있었던 테스트였다!

반응형
LIST