개발일기

[JavaScript] 왼쪽 오른쪽 본문

Algorithm

[JavaScript] 왼쪽 오른쪽

황대성 2024. 6. 24. 20:49
문제 설명

 

문자열 리스트 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_list result
["u", "u", "l", "r"] ["u", "u"]
["l"] []

 

 

입출력 예 설명

 

입출력 예 #1

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

입출력 예 #2

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

 

풀이
function solution(str_list) {
    var answer = [];
    for(let i = 0; i<str_list.length; i++){
        if(str_list[i] === "l"){
            return str_list.slice(0,i)
        }
        else if(str_list[i] === "r"){
            return str_list.slice(i+1,str_list.length)
        }
    }
    return answer
}
풀이 설명

 

먼저 알아야 할건 str_list 배열안에 있는 문자열 "l" 과 "r"의 index 이다. 근데 index를 어떻게 구하더라,,? 생각이 바로 나지 않았다. 그래서 고민고민하던 찰나에 for문으로 배열을 순회 하다가 해당 문자열을 만나면 값을 리턴하도록 하면 되지 않을까? 그래서 바로 코드로 끄적여 봤다.

1. str_list[i] 가 문자열 "l"이라면("r"보다 "l"이 먼저 나온다면) str_list의 0번째 부터 l의 인덱스 전까지를 리턴한다.

2. str_list[i] 가 문자열 "r"이라면("l"보다 "r"이 먼저 나온다면) str_list의 r의 인덱스 이후부터 배열의 마지막 요소까지 리턴한다.

3. 만약 str_list에 "l"이나 "r" 둘 중 하나라도 없다면 빈 배열(answer)을 리턴한다.

'Algorithm' 카테고리의 다른 글

[JavaScript] 배열 만들기 6  (0) 2024.06.27
[JavaScript] 배열 만들기 4  (0) 2024.06.26
[JavaScript] 조건에 맞게 수열 변환하기 2  (0) 2024.06.22
[JavaScript] 세 개의 구분자  (0) 2024.06.20
[JavaScript] 리스트 자르기  (1) 2024.06.19