https://school.programmers.co.kr/learn/courses/30/lessons/181844
정수 배열 arr과 delete_list가 있습니다. arr의 원소 중 delete_list의 원소를 모두 삭제하고 남은 원소들은 기존의 arr에 있던 순서를 유지한 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ arr의 길이 ≤ 100
- 1 ≤ arr의 원소 ≤ 1,000
- arr의 원소는 모두 서로 다릅니다.
- 1 ≤ delete_list의 길이 ≤ 100
- 1 ≤ delete_list의 원소 ≤ 1,000
- delete_list의 원소는 모두 서로 다릅니다.
입출력 예arrdelete_listresult
[293, 1000, 395, 678, 94] | [94, 777, 104, 1000, 1, 12] | [293, 395, 678] |
[110, 66, 439, 785, 1] | [377, 823, 119, 43] | [110, 66, 439, 785, 1] |
입출력 예 설명
입출력 예 #1
- 예제 1번의 arr의 원소 중 1000과 94가 delete_list에 있으므로 이 두 원소를 삭제한 [293, 395, 678]을 return 합니다.
입출력 예 #2
- 예제 2번의 arr의 원소 중 delete_list에 있는 원소는 없습니다. 따라서 arr 그대로인 [110, 66, 439, 785, 1]을 return 합니다.
<정답>
객체 연습을 위해 객체로 풀었고 이 객체를 이용하는게 더 편할 때가 많다.
몰랐던 부분: arr.filter()에서 arr 배열의 요소하나가 객체 전체 key값을
객체는 반복문을 통한 비교 없이도 검사가 바로 가능하다.
그냥 key값들과 요소가 일치하는지 바로 알아봐준다고 한다.(이러면 객체쓰는게 사간상 이득아닌가?)
key값이 없으면 객체는 undefined가 되어 !(undefined) = > true fliter 조건이 ture가 되어,
조건에 참이 되니, result 배열에 담기게 된다.
function solution(arr, delete_list) {
let check = {}
delete_list.forEach(x=>check[x]=true)
let result = arr.filter(x=> !check[x])
return result
}
다른 풀이.
간단하게 includes로 답을 만들어낸 모습이다.
function solution(arr, delete_list) {
return arr.filter((n) => !delete_list.includes(n));
}
'🗃️javascript' 카테고리의 다른 글
엑세스 정리 (0) | 2024.09.30 |
---|---|
부분 문자열 이어 붙여 문자열 만들기(js,Lv.0)[불안할 땐 역시 코테] (0) | 2024.07.12 |
제로초 리액트(1)[리액트 기본기 쌓기] (0) | 2024.07.10 |
순서 바꾸기(js, Lv.0)[splice와 인터프리터로 pop, push없이 순환시키기] (1) | 2024.07.10 |
할 일 목록(js, Lv.0)[객체 다루는 연습하기] (0) | 2024.07.10 |