저장을 습관화
프로그래머스 LV.0 배열 조각하기 본문
프로그래머스 LV.0 배열 조각하기
https://school.programmers.co.kr/learn/courses/30/lessons/181893
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 명
배열 조각하기
2. 문제 설명
정수 배열 arr와 query가 주어집니다.
query를 순회하면서 다음 작업을 반복합니다.
짝수 인덱스에서는 arr에서 query[i]번 인덱스를 제외하고 배열의 query[i]번 인덱스 뒷부분을 잘라서 버립니다.
홀수 인덱스에서는 arr에서 query[i]번 인덱스는 제외하고 배열의 query[i]번 인덱스 앞부분을 잘라서 버립니다.
위 작업을 마친 후 남은 arr의 부분 배열을 return 하는 solution 함수를 완성해 주세요.
3. 제한 사항
- 5 ≤ arr의 길이 ≤ 100,000
- 0 ≤ arr의 원소 ≤ 100
- 1 ≤ query의 길이 < min(50, arr의 길이 / 2)
- query의 각 원소는 0보다 크거나 같고 남아있는 arr의 길이 보다 작습니다.
4. 예시
arr | query | result |
[0, 1, 2, 3, 4, 5] | [4, 1, 2] | [1, 2, 3] |
5. 기본 제공 코드
function solution(arr, query) {
var answer = [];
return answer;
}
6. 제출한 내 답
const solution = (arr, query) => {
for (i = 0; i < query.length; i++) {
if (i % 2 === 0) {
arr = arr.slice(0, query[i] + 1);
} else {
arr = arr.slice(query[i]);
}
}
return arr;
};
정확성 테스트
테스트 1 〉 통과 (1.20ms, 39.8MB)
테스트 2 〉 통과 (2.20ms, 36.7MB)
테스트 3 〉 통과 (0.61ms, 34.6MB)
테스트 4 〉 통과 (0.34ms, 34MB)
테스트 5 〉 통과 (0.36ms, 35.5MB)
테스트 6 〉 통과 (0.65ms, 36.1MB)
테스트 7 〉 통과 (0.90ms, 36.2MB)
테스트 8 〉 통과 (0.41ms, 34.6MB)
테스트 9 〉 통과 (0.76ms, 36MB)
테스트 10 〉 통과 (0.25ms, 33.8MB)
테스트 11 〉 통과 (0.24ms, 33.7MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
6-2. VSC에 작성한 내용
const solution = (arr, query) => {
for (i = 0; i < query.length; i++) {
if (i % 2 === 0) {
arr = arr.slice(0, query[i] + 1);
} else {
arr = arr.slice(query[i]);
}
}
return arr;
};
// 테스트
console.log(solution([0, 1, 2, 3, 4, 5], [4, 1, 2]));
7. 특이사항
없음. 이게 왜 3점 짜리지?
정답률이 66%밖에 안된다고?
문제가 개편되면서 쉬워진건가
8. 다른 사람이 작성한 답
8-1.
function solution(arr, query) {
let s = 0;
let e = query.length - 1;
for (let i=0; i<query.length; i++) {
if (i%2==0) e = s + query[i];
else s += query[i];
}
const answer = arr.slice(s, e);
return answer.length ? answer : [-1];
}
8-2.
function solution(arr, query) {
let start = 0;
let end = 0;
for(let i = 0; i < query.length; i++){
if(i%2===0){
end = start + query[i];
} else {
start += query[i];
}
}
return arr.slice(start, end).length ?
arr.slice(start, end) : [-1]
}
8-3.
function solution(arr, query) {
let answer = [...arr];
var f=0;
var e=0;
for(let i=0;i<query.length;i++){
if(i%2===0){//짝수
e=f+query[i];
//answer = answer.slice(0,query[i])
}else if(i%2===1){//홀수
f=f+query[i];
//answer = answer.slice(query[i],answer.length);
}
}
answer=answer.slice(f,e);
return answer.length>0?answer:[-1]
}
'코딩 테스트 > 프로그래머스 - 자바스크립트' 카테고리의 다른 글
프로그래머스 LV.1 크기가 작은 부분문자열 (0) | 2023.10.03 |
---|---|
프로그래머스 LV.1 이상한 문자 만들기 (0) | 2023.10.03 |
프로그래머스 LV.0 배열 만들기 2 (0) | 2023.10.03 |
프로그래머스 LV.0 전국 대회 선발 고사 (0) | 2023.10.03 |
프로그래머스 LV.0 코드 처리하기 (0) | 2023.10.03 |