안녕하세요 미어캣입니다.
오늘은 프로그래머스 기초문제 카운트 업 문제를 풀어보도록 하겠습니다.
문제설명 :
정수 start_num과 end_num가 주어질 때, start_num부터 end_num까지의 숫자를 차례로
담은 리스트를 return 하도록 하는 solution 함수를 완성하시오.
제한사항 :
0 <= start_num <= end_num <= 50
문제 :
function solution(start_num, end_num) {
var answer = [];
return answer;
}
범위가 주어진 정수를 리스트에 담는 문제입니다.
이 문제도 다양한 풀이 방식이 존재할 것 같습니다.
정답 :
저는 기존의 for문을 사용하여 문제를 해결 하였습니다. (기본이 중하다...)
- for 문을 활용한 풀이 방식 :
function solution(start, end) {
let answer = [];
if((start >= 0 && start <= end) && (end <= 50)) { // 제한사항
for(let i = start; i <= end; i++) {
answer.push(i);
}
}
return answer;
}
하지만 기본기를 다지는 입장이기에 다른 풀이 방법도 해보았습니다.
- Array.from을 활용한 풀이 방식 :
if(start >=0 && start <= end && end <= 50) { // 제한사항
return Array.from({length : end-start+1}, () => {return start++});
}
이상하게 기존의 for문 보다 짧지만 복잡해보입니다.
Array.from은 객체를 받아 배열을 생성합니다.
length라는 객체를 받는데 이는 end-start+1의 value를 가지고 있습니다.
end-start+1 는 start 부터 end까지의 범위입니다.
() => return start++ 는 배열의 각 요소마다 호출되는데 그때마다 start++ 를 반환합니다.
- Array.fill을 활용한 풀이 방식 :
if(start >=0 && start <= end && end <= 50) { // 제한사항
return Array(end-start+1).fill(start).map((c, idx) => idx + start);
}
비슷한 방식인데 이번에는 좀 더 가시적입니다.
Array(end-start+1) : start부터 end까지의 배열을 할당하고
fill(start) : start라는 value를 배열에 채웁니다.
.map((c, idx) => idx + start) : 그때 채우는 start의 value는 idx만큼 증가합니다.
자바스립트의 Array 내장함수를 활용해봤는데 익숙치가 않아서 저는 for문이 더 가시적인 것 같네요?
여러분은 어떤게 더 편하신가요?
감사합니다. 파이팅...!
'Web, View > 코딩테스트 연습' 카테고리의 다른 글
[JavaScript] 문자열의 뒤의 n글자 - 181910 (0) | 2023.12.13 |
---|---|
[JavaScript] 글자 이어 붙여 문자열 만들기 - 181915 (0) | 2023.12.12 |
[JavaScript] 마지막 두 원소 - 181927 (1) | 2023.12.07 |
[JavaScript] 원소들의 곱과 합 - 181929 (1) | 2023.12.07 |
[JavaScript] flag에 따라 다른 값 반환하기 - 181933 (2) | 2023.12.06 |