개발 공부/알고리즘

[프로그래머스 알고리즘] "나누어 떨어지는 숫자 배열" JavaScript / 화살표 함수 표현(arrow function expression)

U_D 2022. 3. 13. 23:10

1. 문제 설명

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

 

 

2. 제한 조건

arr은 자연수를 담은 배열입니다.
정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
divisor는 자연수입니다.
array는 길이 1 이상인 배열입니다.

 

 

 

3. 예시

입력/출력

 

4. 풀이

[for문/if/화살표 함수]

function solution(arr, divisor) {
    var answer = [];
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] % divisor == 0) {
            answer.push(arr[i]);
        } 
    } 
    if (answer.length == 0) {
        answer.push(-1);
    }
    return answer.sort((a,b) => a - b);
}

 

[3항연산자]

function solution(arr, divisor) {
    var answer = [];

    for(var i = 0; i < arr.length; ++i) {
        if(arr[i] % divisor == 0) answer.push(arr[i]);
    }

    return answer.length < 1 ? [-1] : answer.sort((a, b) => a - b);
}

 

화살표 함수 

- 화살표 함수 표현(arrow function expression)은전통적인 함수표현의(function) 간편한 대안

let sum = (a, b) => a + b;

/* 위 화살표 함수는 아래 함수의 축약 버전입니다.

let sum = function(a, b) {
  return a + b;
};
*/

alert( sum(1, 2) ); // 3

출처 : https://ko.javascript.info/arrow-functions-basics

 

 

 1) 매개변수(인자)를 사용할 경우
매개변수가 하나일 경우 소괄호 ( ) 를 생략 가능하고 두 개 이상일 때는 불가능

// 매개변수가 없을 경우
() => { ... }

// 매개변수가 하나일 경우 - 소괄호 생략 가능
data => { ... }
(data) => { ... }

// 매개변수가 두 개 이상일 경우 = 소괄호 생략 불가
(data1, data2, data3) => { ... }

 

 

2) 함수의 블록 범위

기본적으로 화살표 함수는 구문 내에 암묵적으로 return이 설정

그러니 따로 적지않아도 => 안의 내용들을 return 시켜주지만,

중괄호 { } 로 감싼다는건 하나의 코드 블럭을 명시하며 감싼 내부의 것들은 따로 return 해주어야 한다.

// 한 줄 구문이라면 중괄호 생략 가능, return 이 기본 설정되있음.
data => console.log(data)

// 위와 같은 기능이지만 { } 로 감싸면 안의 내용을 따로 return 해주어야 함.
data => { return console.log(data) }

// 두 줄 이상의 구문이면 중괄호 { } 생략 불가능
data => { 
    const msg = data;
    return msg;
}

일반 함수와 화살표 함수의 차이점은 아래 링크 참고
출처 : https://mjn5027.tistory.com/78