Coding Test/프로그래머스

[Java, JavaScript] 나누어 떨어지는 숫자 배열

노 코딩 노 라이프 2023. 8. 21. 08:52

문제설명

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

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

입출력 예

입출력 예#1
arr의 원소 중 5로 나누어 떨어지는 원소는 5와 10입니다. 따라서 [5, 10]을 리턴합니다.

입출력 예#2
arr의 모든 원소는 1으로 나누어 떨어집니다. 원소를 오름차순으로 정렬해 [1, 2, 3, 36]을 리턴합니다.

입출력 예#3
3, 2, 6은 10으로 나누어 떨어지지 않습니다. 나누어 떨어지는 원소가 없으므로 [-1]을 리턴합니다.


코드 설명

JAVA 코드

import java.util.*;

: java.util 패키지의 클래스들을 사용하기 위해 필요한 import 문입니다.

public ArrayList<Integer> solution(int[] arr, int divisor) { ... }

: solution 메서드의 선언으로, int 배열 arr과 정수 divisor를 입력으로 받아 ArrayList<Integer>를 반환하는 메서드입니다.

ArrayList<Integer> answer = new ArrayList<>();

: 결과를 저장할 ArrayList를 생성합니다.

Arrays.sort(arr);

: sort()함수를 이용하여 arr를 오름차순으로 정렬합니다.

for(int i : arr){ ... }

: 정렬된 배열 arr의 각 요소 i에 대해서 반복문을 실행합니다.

if(i%divisor == 0) answer.add(i);

: 현재 요소 idivisor로 나누어 떨어지면, answer 리스트에 add()함수를 이용하여 추가합니다.

if(answer.size() == 0) answer.add(-1);

: 만약 answer 리스트의 크기가 0이라면, -1을 추가합니다. 이는 결과 리스트가 비어있을 경우에 해당합니다.

return answer;

: 최종적으로 구성된 answer 리스트를 반환합니다.

 

JS 코드

const answer = arr.filter(v => v%divisor == 0);

: arr 배열에서 divisor로 나누어 떨어지는 요소들을 필터링하여 answer 배열에 저장합니다. filter() 함수를 사용하여 조건을 만족하는 요소만 추출합니다.

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

: answer 배열의 길이가 0인 경우 -1을 포함한 배열을 반환하고, 그렇지 않은 경우 answer 배열을 오름차순으로 정렬한 후 반환합니다. (a,b) => a-b는 오름차순 정렬 함수입니다.

삼항 연산자(condition ? value_if_true : value_if_false)를 사용하여 조건에 따라 다른 값을 반환합니다.

소스코드&결과

JAVA 코드

import java.util.*;
class Solution {
    public ArrayList<Integer> solution(int[] arr, int divisor) {
        ArrayList<Integer> answer = new ArrayList<>();
        Arrays.sort(arr);
        for(int i : arr){
            if(i%divisor == 0) answer.add(i);
        }
        if(answer.size() == 0) answer.add(-1);
        
        return answer;
    }
}

JS 코드

function solution(arr, divisor) {
    const answer = arr.filter(v => v%divisor == 0);
    return answer.length == 0 ? [-1] : answer.sort((a,b) => a-b);
}

실행결과