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
'🧬알고리즘 > Programmers' 카테고리의 다른 글
[JavaScript] 조건에 맞게 수열 변환하기 2 (0) | 2024.06.12 |
---|---|
[JavaScript] 수열과 구간 쿼리 1 (1) | 2024.06.11 |
[JavaScript] 순서 바꾸기 (0) | 2024.06.11 |
[JavaScript] 배열 조각하기 (1) | 2024.06.10 |
[JavaScript] 2의 영역 (0) | 2024.06.10 |
댓글