Lsiron

코딩테스트 8(filter) 본문

코딩테스트/Java Script

코딩테스트 8(filter)

Lsiron 2024. 6. 7. 15:13

문제 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 함수로 거를 수 있지 않을까 싶었는데 아니나 다를까 굉장히 효율적인 풀이법이 있었다. 인덱스 까지도 파라미터로 넣고 사용할 수 있는 방법이 있다는 것을 알았다.

하루총평.
// 하루 한 문제를 풀더라도 매일매일 꼭 풀어보자,,
근데 문제가 점점 어려워져서 하루 한 문제도 풀기 어렵다ㅠㅠ