728x90
반응형
24년 12월 11일
해결한 문제 갯수: 11
문제 설명
문제 분석
- "l"이 "r"보다 먼저 나오면, "l" 이전의 모든 원소를 순서대로 담은 배열을 반환합니다.
- "r"이 "l"보다 먼저 나오면, "r" 이후의 모든 원소를 순서대로 담은 배열을 반환합니다.
- "l"과 "r"이 없다면 빈 배열을 반환합니다.
첫 번째 접근: indexOf를 활용한 방법
function solution(str_list) {
let answer
const [lIdx, rIdx] = [str_list.indexOf("l"), str_list.indexOf('r')]
if([lIdx, rIdx].includes(-1)) {
if(lIdx === rIdx) return []
else if(lIdx > rIdx) answer = str_list.slice(0, lIdx)
else answer = str_list.slice(rIdx + 1)
} else answer = lIdx < rIdx ? str_list.slice(0, lIdx) : str_list.slice(rIdx + 1)
return answer
}
- 위치 찾기
- indexOf는 문자를 찾지 못하면 -1을 반환합니다.
- 배열 구조 분해를 사용하여 두 인덱스를 동시에 할당합니다.
- 조건 처리
- 먼저 둘 중 하나라도 없는 경우(-1)를 확인합니다.
- 둘 다 있는 경우 인덱스를 비교하여 적절한 부분을 추출합니다.
- 결과 도출
- slice 메소드를 사용하여 필요한 부분 배열을 추출합니다.
- 조건에 따라 시작 인덱스나 끝 인덱스를 적절히 조정합니다.
두 번째 접근: for 루프를 사용한 최적화
function solution(str_list) {
for(let i = 0; i < str_list.length; i++){
if(str_list[i] === 'l') return str_list.slice(0, i)
if(str_list[i] === 'r') return str_list.slice(i + 1)
}
return []
}
변경사항
- 복잡한 조건을 제거하고 첫 번째 'l' 또는 'r'를 찾는 즉시 처리를 종료하도록 수정
728x90
반응형
'자료구조 및 알고리즘 > JavaScript Practice' 카테고리의 다른 글
[프로그래머스] 정수를 나선형으로 배치하기 (0) | 2024.12.13 |
---|---|
[프로그래머스] 전국 대회 선발 고사 (1) | 2024.12.12 |
[프로그래머스] 배열 만들기 5 (0) | 2024.12.11 |
[프로그래머스] 배열의 길이에 따라 다른 연산하기 (0) | 2024.12.09 |
JS Practice) 프로그래머스 Lv.1 : 체육복 (0) | 2023.08.31 |