🧬알고리즘/Programmers

[JavaScript] 왼쪽 오른쪽

뉴발자 2024. 6. 11.
728x90

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

문제

문자 "u", "d", "l", "r"로 이루어진 문자열 리스트 str_list가 매개변수로 주어진다.

 

문자 "l"과 "r" 중 먼저 나오는 문자에 따라 다음과 같은 조건을 적용한 리스트를 반환한다.

 

 • 문자 "l"이 먼저 나오는 경우 해당 문자열 기준으로 왼쪽에 있는 문자열 리스트를 반환한다.

 

 • 문자 "r"이 먼저 나오는 경우 해당 문자열 기준으로 오른쪽에 있는 문자열 리스트를 반환한다.

 

 • "l"과 "r" 둘 다 없다면 빈 리스트를 반환한다.

 

다음 조건을 적용한 문자열 리스트를 반환하는 함수를 작성해라.

 

 

예시

str_list result
["u", "u", "l", "r"] ["u", "u"]
["l", "u"] []
["r", "u"] ["u"]
["u", "d", "u", "u"] []
728x90

 

 

나의 풀이

function solution(str_list) {
  // 문자열 리스트에 r과 l이 있는지 확인
  const r = str_list.includes("r");
  const l = str_list.includes("l");
    
  // 둘 다 있는 경우
  if(r && l) {
    return str_list.indexOf("r") > str_list.indexOf("l")
      ? str_list.filter((v, i) => i < str_list.indexOf("l"))
      : str_list.filter((v, i) => i > str_list.indexOf("r"));
  } else if(r && !l) { // r만 있는 경우
    return str_list.filter((v, i) => i > str_list.indexOf("r"));
  } else if(!r && l) { // l만 있는 경우
    return str_list.filter((v, i) => i < str_list.indexOf("l"));
  } else { // 둘 다 없는 경우
    return [];
  }
}

 

 

다른 풀이

function solution(arr) {
  for(let i = 0; i < arr.length; i++) {
    if (arr[i] === 'l') return arr.slice(0, i);
    if (arr[i] === 'r') return arr.slice(i + 1);
  }
  return [];
}

 

 

 

 

 

 

 

 

 

 

728x90

댓글