Algorithm 03 | code kata
문제
주어진 숫자 배열에서, 0을 배열의 마지막쪽으로 이동시켜주세요.
원래 있던 숫자의 순서는 바꾸지 말아주세요.
(새로운 배열을 생성해서는 안 됩니다.)
Input: [0,1,0,3,12]
Output: [1,3,12,0,0]
나의 풀이
const moveZeroes = nums => {
let count =0;
for(i=0;i<nums.length;i++){
if(nums[i]===0){
nums.splice(i,1);
i--;
count++;
}
}
for(i=0;i<count;i++){
nums.push(0);
}
return nums;
}
접근방법
1) 먼저 배열에서 특정요소 0의 값을 제거해야한다.
특정요소의 값을 제거 하는 방법은 splice를 써도되고 filter를 써도 되지만
filter의 경우 조건을 만족하는 새로운 배열을 리턴하므로
나는 기존의 배열에서 값을 제거 하는 방향으로 접근하고 싶어서 splice 함수를 써보았다.
2) 반복문을 통해 nums 주어진배열의 요소값에 인덱스 i로 하나씩 접근하여 0이면
splice i번째 부터 1개만 삭제한다.
주의 splice는 원본배열의 요소가 삭제되면서 인덱스 값이 하나씩 줄어들기 때문에 i-- i도 1감소 시킨다.
3) 반복문을 돌면서 0의 갯수를 세는 count를 1씩 증가 시킨다
4) count 갯수 만큼 nums 배열에 0을 push 한다.
const moveZeroes = nums => {
let count =0;
for(i=0;i<nums.length;i++){
if(nums[i]===0){
nums.splice(i,1);
i--;
count++;
}
}
for(i=0;i<count;i++){
nums.push(0);
}
return nums;
}
1) 먼저 배열에서 특정요소 0의 값을 제거해야한다.
특정요소의 값을 제거 하는 방법은 splice를 써도되고 filter를 써도 되지만
filter의 경우 조건을 만족하는 새로운 배열을 리턴하므로
나는 기존의 배열에서 값을 제거 하는 방향으로 접근하고 싶어서 splice 함수를 써보았다.
2) 반복문을 통해 nums 주어진배열의 요소값에 인덱스 i로 하나씩 접근하여 0이면
splice i번째 부터 1개만 삭제한다.
3) 반복문을 돌면서 0의 갯수를 세는 count를 1씩 증가 시킨다
4) count 갯수 만큼 nums 배열에 0을 push 한다.
push 메소드는 뒤에서 부터 요소값을 추가하고 원본 배열의 값을 수정하여 리턴한다.
오랫만에 코드카타 문제 풀이를 올렸는데.. 매일매일 알고리즘 문제를 풀기는 했지만 나만의 고민으로 오랫만에 풀어본 것이 뿌듯하여 올려본다!:D
- 예시로 이해하는 filter 메소드
st words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);
console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]
- 예시로 이해하는 splice메소드
var myFish = ['angel', 'clown', 'trumpet', 'sturgeon'];
var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');
// myFish is ["parrot", "anemone", "blue", "trumpet", "sturgeon"]
// removed is ["angel", "clown"]
splice의 매개변수 - MDN 참고
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
자르기 시작하는 인덱스, 자르는 요소의 갯수, 추가할 요소1,2,
Author And Source
이 문제에 관하여(Algorithm 03 | code kata), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sammy1101/Algorithm-03-code-kata저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)