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

[알고리즘] 프로그래머스 옹알이(2)

by KimHarry 2023. 2. 1.

1. 조건

시간 복잡도는 그렇게 크게 중요해 보이진않았다.

그래서인지 숨어있는 예외를 잘 찾아내고 어떻게 해결할지가 관건인것같다.

 

2. 풀이과정

최근에 풀어본 문제랑 비슷해서

정규표현식을 사용하지 않더라도 금방 풀 수 있을거라 생각했다.

하 근데 예외처리 하는게 생각 이상으로 까다로웠다...

똑같은 옹알이를 했을 때 어떻게 그 예외를 잡아낼지... 흠 이게 왜 레벨 1?

 

결국 혼자 못풀었다.

 

3.  풀이

function solution(babbling) {
  const words = ["aya", "ye", "woo", "ma"];
  let answer = 0;

  babbling.map((babble) => {
    words.map((word) => {
      if (babble.includes(word.repeat(2))) return;

      babble = babble.split(word).join(" ");
    });

    if (babble.split(" ").join("").length === 0) answer += 1;
  });

  return answer;
}

solution(["aya", "yee", "u", "maa"]);
solution(["ayaye", "uuu", "yeye", "yemawoo", "ayaayaa"]);

 

사실 이 코드가 왜 있는지 굉장히 눈치채기 까다로웠다...

왜 join("")이 아닌 join(" ")을 쓰고 이후에 마지막에 합치는 과정을 적었는지...

babble = babble.split(word).join(" ");

if (babble.split(" ").join("").length === 0) answer += 1;

 

그에 대한 해답은 지문 만 마지막에 있었다

" "으로 나누지 않으면 "wo" 와 "o"가 붙어서 "woo"가 되어버릴 수 있기 때문이다.

 

이게 왜 레벨 1이냐고... 나도 얼른 레벨 3까지 올라가고싶다고...

갈길이 멀다 화이팅.