⛵ 항해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