[JavaScript] Lv0 - 왼쪽 오른쪽

Moon·2025년 1월 21일
0
post-thumbnail

왼쪽 오른쪽

문제 설명

문자열 리스트 str_list에는 "u", "d", "l", "r" 네 개의 문자열이 여러 개 저장되어 있습니다. str_list에서 "l"과 "r" 중 먼저 나오는 문자열이 "l"이라면 해당 문자열을 기준으로 왼쪽에 있는 문자열들을 순서대로 담은 리스트를, 먼저 나오는 문자열이 "r"이라면 해당 문자열을 기준으로 오른쪽에 있는 문자열들을 순서대로 담은 리스트를 return하도록 solution 함수를 완성해주세요. "l"이나 "r"이 없다면 빈 리스트를 return합니다.


제한사항

  • 1 ≤ str_list의 길이 ≤ 20
  • str_list는 "u", "d", "l", "r" 네 개의 문자열로 이루어져 있습니다.

입출력 예

str_listresult
["u", "u", "l", "r"]["u", "u"]
["l"][]

입출력 예 설명

입출력 예 #1

  • "r"보다 "l"이 먼저 나왔기 때문에 "l"의 왼쪽에 있는 문자열들을 담은 리스트인 ["u", "u"]를 return합니다.

입출력 예 #2

  • "l"의 왼쪽에 문자열이 없기 때문에 빈 리스트를 return합니다.

function solution(str_list) {
    const idx = str_list.findIndex((v) => v === "l" || v === "r");

    return str_list[idx] === "l"
        ? str_list.slice(0, idx)
        : str_list[idx] === "r"
        ? str_list.slice(idx + 1)
        : [];
}

코드설명

  1. findIndex 메서드:
    • str_list.findIndex((v) => v === "l" || v === "r"):
      • 리스트에서 "l" 또는 "r"이 처음 등장하는 인덱스를 찾습니다.
      • "l""r" 모두 없으면 1을 반환합니다.
      • 이 방식은 두 값을 동시에 찾기 때문에 코드가 간결해집니다.
  2. 조건 분기:
    • str_list[idx] === "l":
      • "l"이 먼저 등장하면, "l"의 왼쪽 부분을 반환합니다.
      • str_list.slice(0, idx)idx 이전의 모든 원소를 반환합니다.
    • str_list[idx] === "r":
      • "r"이 먼저 등장하면, "r"의 오른쪽 부분을 반환합니다.
      • str_list.slice(idx + 1)idx 이후의 모든 원소를 반환합니다.
    • 1인 경우:
      • "l""r"이 모두 없으면 빈 리스트 []를 반환합니다.
  3. 결과 반환:
    • 조건에 따라 적절한 리스트를 반환합니다.
profile
MOON.DEVLOG

0개의 댓글