Lsiron
코딩테스트 8(filter) 본문
문제 1. 같은 숫자는 싫어
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,
arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.
풀이=해답.
function solution(arr) {
let answer = []
for(let i = 0 ; i < arr.length ; i += 1){
if(arr[i] !== arr[i+1]){
answer.push(arr[i])
}
}
return answer
}
=> 역시나 근본으로 풀었다. 빈배열을 변수로 선언 해 준 뒤에, 반복문을 통해 배열 요소의 해당 값이 다음 요소의 값과 다를때만 해당 값을 빈 배열에 넣어주는 형식으로 풀었다.
외전.
function solution(arr)
{
return arr.filter((val,index) => val != arr[index+1]);
}
=> val 은 배열의 현재 요소를 의미하며, index는 해당 요소의 인덱스를 의미한다. 이 filter 함수는 현재 요소와 다음 요소가 같지 않은 요소를 필터링하여 새로운 배열을 생성한다.
// filter 함수로 거를 수 있지 않을까 싶었는데 아니나 다를까 굉장히 효율적인 풀이법이 있었다. 인덱스 까지도 파라미터로 넣고 사용할 수 있는 방법이 있다는 것을 알았다.
하루총평.
// 하루 한 문제를 풀더라도 매일매일 꼭 풀어보자,,
근데 문제가 점점 어려워져서 하루 한 문제도 풀기 어렵다ㅠㅠ
'코딩테스트 > Java Script' 카테고리의 다른 글
코딩테스트 10(map, join) (0) | 2024.07.01 |
---|---|
코딩테스트 9(sort, break, slice) (0) | 2024.06.30 |
코딩테스트 7(배열 초기화, \n을 포함한 표현식 삽입, 유클리드 호제법-최대공약수, 최소공배수) (0) | 2024.06.05 |
코딩테스트 6(Math.sqrt, isInteger, split, sort, reverse, join, isNaN, parseInt) (0) | 2024.06.04 |
코딩테스트 5(filter, Math.min, substr, Math.floor, repeat, slice) (0) | 2024.05.25 |