[프로그래머스 : 알고리즘 코딩테스트] Level.1 나누어 떨어지는 숫자 배열

AREUM·2023년 1월 22일
0

코딩테스트

목록 보기
20/22
post-thumbnail

문제 설명

매개변수 : arr => 자연수를 담은 배열, divisor => 자연수

divisor의 자연수가 arr 배열에 담긴 자연수와 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수를 만들어라.
단, divisor로 나누어 떨어지는 자연수( arr ) 가 없을 경우에는 배열에 -1을 담아서 반환해라.

제한사항

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

입출력 예 or 설명

  • arr의 원소 중 5로 나누어 떨어지는 원소는 5와 10이다. 따라서 [ 5, 10 ]을 return 한다.
  • arr의 모든 원소는 1로 나누어 떨어진다. 원소를 오름차순으로 정렬해 [ 1, 2, 3, 36 ]을 return 한다.
  • 3, 2, 6은 10으로 나누어 떨어지지 않는다. 나누어 떨어지는 원소가 없으므로 [ -1 ]을 return 한다.

문제 풀이 or 설명

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

문제 설명
1. arr에 담긴 배열을 오름차순으로 바꿔줘야하기에 arr2라는 변수를 만들고 그 안에, 매개변수 arrsort메소드를 이용해 오름차순으로 정렬해준다.
2. for문을 이용해 arr2변수의 길이만큼 반복시켜준다.
3. 삼항연산자로 arr2에 담긴 정수를 divisor로 나누었을 때, 나누어 떨어지는 ( 나머지가 0 )숫자들은 빈 배열을 담은 answer변수에 push메소드를 사용해 arr의 숫자들을 추가 시켜주고, 나누어 떨어지지 않는 수는 0을 반환해준다.
4. 나누어 떨어지는 수가 없는 경우에는 배열이 비어있기 때문에, 조건문을 이용해 answer의 길이가 0일 경우 answer배열에 -1을 push추가 해준다.
( 나는 -1을 변수로 만들어서 그 변수를 추가했다. )

느낀점 :
-1을 반환하는 부분이 헷갈려서 조금 해맸다.
삼항연산자에 0이 아닌 answer.push(no)를 했는데 [ 5, -1, -1, 10 ] 이런식으로 나와서 한참을 고민했다.
이 부분은 실무에서 에러처리를 할 경우 ? 에러처리를 따로 조건문을 걸어주는 상황일 것 같다는 생각이 들었다.

profile
어깨빵으로 부딪혀보는 개발끄적이는 양씨 인간

0개의 댓글