한 걸음씩

[프로그래머스][JS] 왼쪽 오른쪽 본문

Programmers

[프로그래머스][JS] 왼쪽 오른쪽

winter17 2023. 6. 22. 12:30

https://school.programmers.co.kr/learn/courses/30/lessons/181890

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 과정

function solution(str_list) {
    const l = str_list.indexOf('l')
    const r = str_list.indexOf('r')
    if (!str_list.includes('l') && !str_list.includes('r')){ 
        return []
    }else if (!str_list.includes('l')){
        return str_list.slice(r + 1)
    }else if (!str_list.includes('r')){
        return str_list.slice(0, l)
    }else if (l < r){ // l이 먼저 나오는 경우
        return str_list.slice(0, l)
    }else if (l > r){ // r이 먼저 나오는 경우
        return str_list.slice(r + 1)
    }
}

문제 마지막에서 'l'이나 'r'이 없다면 빈 리스트를 리턴하라고 해서 or조건으로 해줬는데 통과가 안 돼서 and 조건으로 바꿔줬더니 통과를 했다. 문제가 좀 모호해서 풀기가 힘들었다.

위의 조건들 중 하나라도 빠지면 통과가 안되기 때문에 그 부분을 주의해서 풀어야한다.


리뷰

문제가 좀 더 명확했다면 푸는데 수월했을 것 같다. 그렇지만 어려운 문제는 아닌 것 같다.

 

다른 사람 풀이를 보니까 for문을 사용해서 푸는게 좀 더 간단한 것 같다.

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 [];
}

l이 먼저 나오면 처음부터 l전까지 자르고

r이 먼저 나오면 r+1부터 끝까지 자르고