⛵ 항해99/TIL · WIL ✏️
[TIL] 2023.08.21 - 프로그래머스 / filter() / Math.abs() / /[0-9]/gi / includes()
hhhhy
2023. 8. 21. 19:27
[페어 프로그래밍] 프로그래머스
1. 나누어 떨어지는 숫자 배열
https://school.programmers.co.kr/learn/courses/30/lessons/12910
- 나의 풀이
function solution(arr, divisor) {
let newarr = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] % divisor === 0) {
newarr.push(arr[i]);
}
}
if (newarr.length === 0) {
newarr.push(-1);
}
return newarr.sort(function (a, b) {
return a - b;
})
}
console.log(solution([5, 9, 7, 10], 5));
- 알게 된 것
📍 filter() 메서드
- 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환
- arr.filter(callback(element[, index[, array]])[, thisArg])
- callback : 각 요소를 시험할 함수 / true를 반환하면 요소를 유지하고, false를 반환하면 버림
: 아래 세 가지 매개 변수를 받음
1) element : 처리할 현재 요소
2) 선택) index : 처리할 현재 요소의 인덱스
3) 선택) array : filter를 호출한 배열
- 선택) thisArg : callback을 실행할 때 this로 사용하는 값.
# 예시
- 기본 : arr.filter(function(element) {return element % divisor === 0});
- 화살표 함수 : arr.filter(element => element % divisor === 0)
# pair 풀이
function solution(arr, divisor) {
var answer = [];
answer = arr.filter(element => element % divisor === 0)
answer = answer.sort(function (comp1, comp2) {
return comp1 - comp2
})
if (answer.length === 0) {
answer.push(-1)
}
return answer;}
# 참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
2. 음양 더하기
https://school.programmers.co.kr/learn/courses/30/lessons/76501
- 나의 풀이
function solution(absolutes, signs) {
let sum = 0;
for (let i = 0; i < absolutes.length; i++) {
if (signs[i] === true) {
sum = sum + absolutes[i];
} else {
sum = sum - absolutes[i];
}
}
return sum
}
console.log(solution([4, 7, 12], [true, false, true]));
- 알게 된 것
📍 Math.abs()
- Math.abs() 함수는 주어진 숫자의 절대값을 반환
# pair 풀이
function solution(absolutes, signs) {
let sum = 0;
for (let i = 0; i < absolutes.length; i++) {
if (signs[i] === true) {
sum = sum + Math.abs(absolutes[i]);
} else {
sum = sum - absolutes[i];
}
}
return sum
}
console.log(solution([4, 7, 12], [true, false, true]));
# 예시
Math.abs(-2); // 2
# 참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/abs
3. 핸드폰 번호 가리기
https://school.programmers.co.kr/learn/courses/30/lessons/12948
- 나의 풀이
function solution(phone_number) {
let frontNum = phone_number.length - 4;
return "*".repeat(frontNum) + phone_number.slice(-4);
}
- 알게된 것
📍 /[0-9]/gi
- '숫자0~9'를 모두 찾기
# pair 풀이
function solution(phone_number) {
var answer = '';
var fNum = phone_number.slice(0, -4).replace(/[0-9]/gi, "*")
var bNum = phone_number.substr(-4)
answer = fNum + bNum
return answer;
}
# 예시
/[0-9]/g : '숫자0~9'를 모두 찾는다.
=> 대나무 빨대 a급 제품은 10개 남아있습니다. 010-1111-2222 로 Call Me~!
# 참고
1) https://inpa.tistory.com/entry/JS-%F0%9F%93%9A-%EC%A0%95%EA%B7%9C%EC%8B%9D-RegExp-%EB%88%84%EA%B5%AC%EB%82%98-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EC%89%BD%EA%B2%8C-%EC%A0%95%EB%A6%AC
2) https://curryyou.tistory.com/234
4. 없는 숫자 더하기
https://school.programmers.co.kr/learn/courses/30/lessons/86051
- 나의 풀이
function solution(numbers) {
let sum = 0;
for (let i = 0; i < numbers.length; i++) {
sum += numbers[i]
}
return 45 - sum
}
console.log(solution([5, 8, 4, 0, 6, 7, 9]))
- 알게 된 것
📍 includes() 메서드
- 배열이 특정 요소를 포함하고 있는지 판별
# pair 풀이
function solution(numbers) {
var answer = 0
var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
var diff = []
// arr의 요소 중 numbers와 같은 숫자가 없으면 diff에 추가
diff = arr.filter((a) => !numbers.includes(a))
for (let i = 0; i < diff.length; i++) {
answer += diff[i]
}
return answer}
# 예시
[1, 2, 3].includes(2); // true
# 참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/includes