🧬알고리즘/Programmers

[JavaScript] 세 개의 구분자

뉴발자 2024. 6. 14.
728x90

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

문제

문자열 myStr이 매개변수로 주어진다.

 

문자열이 주어졌을 때 문자 "a", "b", "c"를 구분자로 사용해 문자열을 나눈다.

 

"a", "b", "c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 반환하는 함수를 작성해라.

 

단, 구분자 사이에 다른 문자가 없는 경우에는 아무것도 저장하지 않는다.

 

반환하는 배열이 빈 배열이라면  ["EMPTY"] 가 반환된다.

 

 

예시

myStr result
"baconlettucetomato" ["onlettu", "etom", "to"]
"abcd" ["d"]
"cabab" ["EMPTY"]
728x90

 

 

나의 풀이

function solution(myStr) {
  const tmp = [];
  
  // 문자열을 배열로 만든 후
  // value가 a, b, c인 값을 " "로 push하고,
  // a, b, c가 아닌 값은 value를 push한다.
  myStr.split("").map((v) => {
    (v === "a" || v === "b" || v === "c")
    ? tmp.push(" ")
    : tmp.push(v);
  });
  
  // join() 함수로 문자열로 만든 후
  // split() 함수로 띄어쓰기를 없앤 후
  // filter() 함수로 빈 값이 아닌 값만 반환한다.
  const arr = tmp.join("").split(" ").filter((v) => v);
  
  return arr.length ? arr : ["EMPTY"];
}

 

 

다른 풀이

// match() 함수와 표준식을 사용한다.
const solution= s => s.match(/[^a-c]+/g) || ['EMPTY'];

 

 

 

 

 

 

 

 

 

 

728x90

댓글