저장을 습관화
프로그래머스 LV.0 배열 만들기 3 본문
프로그래머스 LV.0 배열 만들기 3
https://school.programmers.co.kr/learn/courses/30/lessons/181895
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 명
배열 만들기 3
2. 문제 설명
정수 배열 arr와 2개의 구간이 담긴 배열 intervals가 주어집니다.
intervals는 항상 [[a1, b1], [a2, b2]]의 꼴로 주어지며 각 구간은 닫힌 구간입니다. 닫힌 구간은 양 끝값과 그 사이의 값을 모두 포함하는 구간을 의미합니다.
이때 배열 arr의 첫 번째 구간에 해당하는 배열과 두 번째 구간에 해당하는 배열을 앞뒤로 붙여 새로운 배열을 만들어 return 하는 solution 함수를 완성해 주세요.
3. 제한 사항
- 1 ≤ arr의 길이 ≤ 100,000
- 1 ≤ arr의 원소 < 100
- 1 ≤ a1 ≤ b1 < arr의 길이
- 1 ≤ a2 ≤ b2 < arr의 길이
4. 예시
arr | intervals | result |
[1, 2, 3, 4, 5] | [[1, 3], [0, 4]] | [2, 3, 4, 1, 2, 3, 4, 5] |
5. 기본 제공 코드
function solution(arr, intervals) {
var answer = [];
return answer;
}
6. 제출한 내 답
const solution = (arr, intervals) => {
return arr
.slice(intervals[0][0], intervals[0][1] + 1)
.concat(arr.slice(intervals[1][0], intervals[1][1] + 1));
};
6-2. VSC에 작성한 내용
const solution = (arr, intervals) => {
return arr
.slice(intervals[0][0], intervals[0][1] + 1)
.concat(arr.slice(intervals[1][0], intervals[1][1] + 1));
};
// 테스트
console.log(
solution(
[1, 2, 3, 4, 5],
[
[1, 3],
[0, 4],
]
)
);
테스트
let a = [1, 2, 3, 4, 5];
let b = [
[1, 3],
[0, 4],
];
console.log(a.slice(1, 3)); // [2, 3
// console.log(b[0].join(",")); // 1,3
// let c = b[0].join(","); // 문자열이라 안되나봄?
// console.log(a.slice(c)); // [1, 2, 3, 4, 5]
// console.log(a.slice(b[0].join(","))); // [1, 2, 3, 4, 5]
let c = b[0][0];
let d = b[0][1];
console.log(a.slice(c, d).concat(a.slice(b[1][0], b[1][1]))); // [ 2, 3, 1, 2, 3, 4 ]
console.log(a.slice(c, d + 1).concat(a.slice(b[1][0], b[1][1] + 1))); // [ 2, 3, 4, 1, 2, 3, 4, 5 ]
7. 특이사항
reduce를 써야할까 filter를 써야할까 아니면 for문을 쓸까 고민했었는데
어렵게 생각할게 아니었다
8. 다른 사람이 작성한 답
8-1. 전개연산자
function solution(arr, intervals) {
const [[a,b],[c,d]] = intervals;
return [...arr.slice(a, b+1), ...arr.slice(c, d+1)];
}
8-2. 전개연산자
const solution = (arr, [[s1, e1], [s2, e2]]) => (
[...arr.slice(s1, e1 + 1), ...arr.slice(s2, e2 + 1)]
)
8-3. map과 for문
function solution(arr, intervals) {
var answer = [];
intervals.map((a)=>{
for(let i = a[0]; i<=a[1]; i++){
answer.push(arr[i])
}
})
return answer;
}
'코딩 테스트 > 프로그래머스 - 자바스크립트' 카테고리의 다른 글
프로그래머스 LV.2 최댓값과 최솟값 (0) | 2023.09.21 |
---|---|
프로그래머스 LV.0 수 조작하기 2 (0) | 2023.09.21 |
프로그래머스 LV.0 주사위 게임 2 (0) | 2023.09.21 |
프로그래머스 LV.0 인덱스 바꾸기 (0) | 2023.09.21 |
프로그래머스 LV.0 모스부호 (1) (0) | 2023.09.21 |