removeDuplicate.js (7kyu 62)

Codewars 알고리즘 풀이


Problem

  • Your task is to remove all duplicate words from a string, leaving only single (first) words entries.
    • 문자열의 모든 중복 단어를 제거하고, 하나의 (첫 번째) 단어만 남긴다.


Solution 01

function removeDuplicate(str) {
  str = str.split(' ');
  let result = [];
  
  for (let i = 0; i < str.length; i++) {
    if (!result.includes(str[i])) {
      result.push(str[i]);
    }
  }
  return result.join(' ');
}

removeDuplicate('one two two');  // one two
removeDuplicate('a b b c c d');  // a b c d

split(): 문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.

includes(): 특정 값이 있는지 확인하고, true/false를 반환한다.

push(): 배열의 끝에 새 element를 추가하고, 새로운 길이를 반환한다.

join(): 배열의 모든 element를 결합하고, 새 문자열로 반환한다.


Solution 02

function removeDuplicate(str) {
  let result = [];
  
  str.split(' ').forEach(i => {
    if (!result.includes(i)) {
      result.push(i);
    }
  });
  return result.join(' ');
}

removeDuplicate('one two two');  // one two
removeDuplicate('a b b c c d');  // a b c d

forEach(): 배열의 각 element에 대해, 제공된 함수를 차례로 한 번씩 호출한다.


Solution 03

function removeDuplicate(str) {
  let result = [];
  
  str.split(' ').map(i => {
    if (!result.includes(i)) {
      result.push(i);
    }
  });
  return result.join(' ');
}

removeDuplicate('one two two');  // one two
removeDuplicate('a b b c c d');  // a b c d

map(): 배열 내 모든 element에 대해, 호출한 함수의 결과를 모아 새 배열로 반환한다.


Solution 04

function removeDuplicate(str) {
  return str.split(' ').filter((i, index, arr) => arr.indexOf(i) === index).join(' ');
}

removeDuplicate('one two two');  // one two
removeDuplicate('a b b c c d');  // a b c d

filter(): 테스트를 통과한 배열의 각 값을 모아, 새 배열로 반환한다.

indexOf(): 주어진 값이 처음으로 나타나는 위치를 반환한다. 일치하는 값이 없으면 -1을 반환한다.