[프로그래머스-기초] 왼쪽 오른쪽

JE·2024년 1월 20일
0

코테/코플릿

목록 보기
54/57

왼쪽 오른쪽

문제 설명

문자열 리스트 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) {
    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 []
}

이번 문제는 간단했다.
특정 문자열을 기준으로 왼쪽, 오른쪽으로의 배열을 반환하고
특정 문자열이 없을 경우 빈 배열을 반환하면 된다.

초반 코드를 작성할 때
let result = [] 빈 배열을 선언해
result에 push하는 방식으로 값을 반환했다.

for문은 str_list의 길이 만큼 순환하고 2개의 if문 모두 적용된다.

그래서 if문의 조건이 맞다면 바로 반환하도록 return을 했다.
이럴 경우 해당 조건이 충족되면 for문은 종료 된다.

좀 더 개선한다면
str_list.slice(i + 1, str_list.length)의 부분에서
str_list의 길이 까지 반환하도록 했지만
str_list.slice(i + 1,) 이런식으로 표현할 경우
i + 1부터 모든 값을 반환한다는 의미가 된다.

function solution(str_list) {
    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)
        }
    }
    return []
}

아까 보단 조금은 간결해 지지 않았을까 싶다.

이번 문제는에서 다른 사람들도 나와 같은 방식으로 문제를 해결해
코드를 가져오진 않았다.

profile
[프론트 애송이] 작은 깨달음도 기록하기

0개의 댓글