728x90
반응형
안녕하세요. 민쯔입니다.😊
프로그래머스 코딩 테스트 연습문제 "없는 숫자 더하기"문제 해결방안에 대해 설명하겠습니다.
문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다.
numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
인데 저는 진짜... 문제 설명 그대로 풀었습니다....😂
function solution(numbers) {
let number = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
let noNum = number.filter(num => !numbers.includes(num));
let answer = noNum.reduce((acc, cur) => acc + cur);
return answer;
}
저는 number의 변수를 만들어 0~9까지 숫자를 배열로 담고
number배열에서 numbers의 배열에 있는 숫자를 없애서 numbers에 배열에 없는 숫자만을 number배열에 남긴 뒤
남은 숫자를 더하는 방향으로 구했습니다.
let number = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
- 0~9까지 배열에 담음
let noNum = number.filter(num => !numbers.includes(num));
- number배열에서(0~9) numbers배열에 없는 숫자를 추출해서 noNum변수에 담음
- filter() : 주어진 함수의 테스트(괄호 부분)를 통과하는 모든 요소를 모아 새로운 배열로 반환
- includes() : 배열이 특정 요소를 포함하고 있는지 판별
- filter(), includes() 이 두 가지를 사용하여 number, numbers 배열에 대한 차집합을 구했습니다.
- filter(), includes() 사용하면 두배 열에 교집합과 차집합을 구할 수 있습니다. (검색해서 알게 됐어요!)
filter(), includes()를 사용하여 교집합과 차집합을 구하는 예시
arr1 = [1,2,4,5,7];
arr2 = [3,4,7,9];
const test1 = arr1.filter(num => arr2.includes(num));
const test2 = arr1.filter(num => !arr2.includes(num));
const test3 = arr2.filter(num => !arr1.includes(num));
console.log(test1); // 교집합 [4,7] -> C
console.log(test2); // 차집합 [1,2,5] -> A
console.log(test3); // 차집합 [3,9] -> B
let answer = noNum.reduce((acc, cur) => acc + cur);
- reduce : 배열의 각 요소에 대해 주어진 함수를 실행하고, 하나의 결괏값을 반환
- Array.reduce((acc, cur) => acc + cur , 기본값)
- acc : 누산기 (누적된 값)
- cur : 현재 값
- 기본값 : 넣어도 되고 안 넣어도 됨(생략될 경우 0부터 시작)
- noNum = [1, 2, 3] 이면
- reduce((0, 1) => 0 + 1); // 1
- reduce((1, 2) => 1 + 2); // 3
- reduce((3, 3) => 3 + 3); // 6
여기까지 해결방안 설명이었습니다.
저는 이렇게 풀었는데 다른 사람 풀이 보니까 다들 "45 - number배열의 원소의 합" 이렇게 하더라고요....
제가 꼬아서 푸나 봐요😂 이렇게 또 하나 배워갑니다.
그래도 교집합, 차집합 사용방법을 알게 돼서 기분 좋습니다~
728x90
반응형
'코딩 > 프로그래머스 코딩테스트' 카테고리의 다른 글
[프로그래머스] 약수의 개수와 덧셈 (0) | 2021.10.14 |
---|---|
[프로그래머스] 예산 (0) | 2021.10.06 |
[프로그래머스] K번째수 (0) | 2021.10.02 |
[프로그래머스] 내적 (0) | 2021.09.24 |
[프로그래머스] 신규 아이디 추천 (0) | 2021.09.10 |