songDecoder.js

Codewars 알고리즘 풀이


Problem

  • Let’s assume that a song consists of some number of words (that don’t contain WUB).
    • 노래가 몇 개의 단어로 구성되어 있다. (WUB을 포함하지 않는다)
  • The input consists of a single non-empty string, consisting only of uppercase English letters, the string’s length doesn’t exceed 200 characters.
    • 입력(input)은 비어 있지 않은 하나의 문자열로 구성된다.
    • 영문 대문자로만 구성된다.
    • 문자열의 길이는 200자를 초과하지 않는다.
  • Return the words of the initial song that Polycarpus used to make a dubsteb remix.
    • dubsteb remix를 만드는 데 사용한 초기 노래의 단어를 반환한다.
  • Separate the words with a space.
    • 단어를 공백으로 구분한다.



Solution 01

function songDecoder(song) {
  return song.split('WUB').filter(i => i !== '').join(' ');
}

songDecoder('AWUBBWUBC');        // A B C
songDecoder('WUBAWUBBWUBCWUB');  // A B C
songDecoder('AWUBWUBBWUBWUBC');  // A B C


Solution 02

function songDecoder(song) {
  return song.split('WUB').filter(Boolean).join(' ');
}

songDecoder('AWUBBWUBC');        // A B C
songDecoder('WUBAWUBBWUBCWUB');  // A B C
songDecoder('AWUBWUBBWUBWUBC');  // A B C


Solution 03

function songDecoder(song) {
  return song.replace(/(WUB)+/g, ' ').trim();
}

songDecoder('AWUBBWUBC');        // A B C
songDecoder('WUBAWUBBWUBCWUB');  // A B C
songDecoder('AWUBWUBBWUBWUBC');  // A B C


Solution 04

function songDecoder(song) {
  return song.replace(/(WUB){1,3}/g, ' ').trim();
}

songDecoder('AWUBBWUBC');        // A B C
songDecoder('WUBAWUBBWUBCWUB');  // A B C
songDecoder('AWUBWUBBWUBWUBC');  // A B C