728x90
반응형
24년 12월 10일
해결한 문제 갯수: 23
문제 설명
문제 분석
- 문자열 배열 intStrs의 각 원소에서 인덱스 s부터 길이 l만큼의 부분 문자열을 추출합니다.
- 추출된 문자열을 숫자로 변환합니다.
- 변환된 숫자가 k보다 큰 경우만 선택하여 새 배열을 생성합니다.
첫 번째 접근: map과 filter 조합
function solution(intStrs, k, s, l) {
return intStrs.map(n => {
let num = Number(n.slice(s, s + l))
return num > k ? num : 0
}).filter(a => a)
}
- map을 사용하여 각 문자열을 처리:
- slice(s, s + l)로 부분 문자열 추출
- Number()로 문자열을 숫자로 변환
- 조건부 연산자로 k보다 큰 경우만 선택, 나머지는 0으로 설정
- filter로 0이 아닌 값(truthy)만 선택
- 위 접근에서는 배열에 로직에 불필요한 0이 포함된다는 단점이 있습니다.
두 번째 접근: reduce를 활용한 방법
function solution(intStrs, k, s, l) {
return intStrs.reduce((answer, n) => {
let num = Number(n.slice(s, s + l))
if(num > k)answer.push(num)
return answer
}, [])
}
변경사항
- 조건을 만족하는 숫자만 배열에 추가해 불필요한 요소를 배열에 추가하지 않았습니다.
세 번째 접근: 최적화된 map과 filter
function solution(intStrs, k, s, l) {
return intStrs.map(n => Number(n.slice(s, s + l))).filter(a => a > k)
}
변경사항
- 로직을 더욱 간결하게 표현하여 가독성을 높였습니다.
728x90
반응형
'자료구조 및 알고리즘 > JavaScript Practice' 카테고리의 다른 글
[프로그래머스] 전국 대회 선발 고사 (1) | 2024.12.12 |
---|---|
[프로그래머스] 왼쪽 오른쪽 (1) | 2024.12.11 |
[프로그래머스] 배열의 길이에 따라 다른 연산하기 (0) | 2024.12.09 |
JS Practice) 프로그래머스 Lv.1 : 체육복 (0) | 2023.08.31 |
JS Practice) 프로그래머스 Lv.1 : 숫자 짝꿍 (0) | 2023.08.30 |