왼쪽 오른쪽
https://school.programmers.co.kr/learn/courses/30/lessons/181890#
나의 풀이
function solution(str_list) {
let lIdx = str_list.indexOf('l')
let rIdx = str_list.indexOf('r')
let subL = str_list.slice(0, lIdx)
let subR = str_list.slice(rIdx+1)
if(!str_list.includes('l') && !str_list.includes('r')){
return []
} else if(!str_list.includes('l') && str_list.includes('r')){
return subR
} else if(str_list.includes('l') && !str_list.includes('r')){
return subL
} else {
return lIdx < rIdx ? subL : subR
}
}
- 처음에 'l'과 'r'이 없는 경우만 제외하고 나머지는 index만 비교하여 결과를 반환하니 1번, 20번 테스트가 틀렸다.
- 그 이유는 l만 포함하는 경우, r만 포함하는 경우를 따로 계산하지 않았기 때문이다.
다른 사람의 풀이
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 [];
}
- 내가 생각했던 것보다 문제를 너무 어렵게 풀었다고 반성했다.
- for문을 사용해서 각 배열 요소에 'l'이나 'r'이 나오면 그 인덱스를 기준으로 string 배열을 자르고, 둘 다 없으면 빈 배열만 반환하는 형식으로도 충분히 풀 수 있는 문제였다.
'JS > 알고리즘(코테)' 카테고리의 다른 글
프로그래머스 코딩테스트 LV.1 - 최소직사각형 (0) | 2023.07.02 |
---|---|
프로그래머스 코딩테스트 LV. 1 - 삼총사 (0) | 2023.07.01 |
프로그래머스 코딩테스트 LV.0 - 외계어 사전 (0) | 2023.06.05 |
프로그래머스 코딩테스트 LV.0 - 두 수의 합 (0) | 2023.06.04 |
프로그래머스 코딩테스트 LV.0 - 문자열 묶기 (0) | 2023.06.03 |