📘문제 설명
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
https://school.programmers.co.kr/learn/courses/30/lessons/12910
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📌 제한조건
- arr은 자연수를 담은 배열입니다.
- 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
- divisor는 자연수입니다.
- array는 길이 1 이상인 배열입니다.
💡 개념 설명
1️⃣ 단계: 결과 저장용 리스트 생성
divisor로 나누어 떨어지는 값들을 임시로 저장할 ArrayList를 만듭니다. 배열은 처음에 크기를 정해야 하지만, ArrayList는 크기가 정해져 있지 않아 값을 계속 추가하기 편리해요.
2️⃣ 단계: 나누어 떨어지는 값 찾기
for 반복문으로 arr 배열의 숫자를 처음부터 끝까지 하나씩 확인합니다. 각 숫자를 divisor로 나누었을 때 나머지가 0인지(% 연산자 사용) 검사해요. 나머지가 0이라면 그 숫자를 1단계에서 만든 ArrayList에 추가합니다.
3️⃣ 단계: 예외 상황 처리
반복문이 모두 끝난 후, 만약 ArrayList에 아무 값도 추가되지 않았다면 나누어 떨어지는 숫자가 하나도 없다는 뜻이에요. 이때는 문제의 요구사항에 따라 -1만 들어있는 배열을 만들어 반환하고 함수를 종료합니다.
4️⃣ 단계: 배열로 변환하고 정렬하기
ArrayList에 값이 하나라도 있다면, 이 값들을 실제 정답 배열(int[] answer)로 옮겨 담습니다. 그 후, 자바의 기본 정렬 기능인 Arrays.sort()를 사용해 배열의 값들을 오름차순(작은 수부터 큰 수 순서)으로 정렬합니다.
5️⃣ 단계: 최종 결과 반환
정렬까지 마친 최종 배열 answer를 반환합니다.
📎 입출력 예시

📎 코드
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int divisor) {
// 1. 나누어 떨어지는 값들을 저장할 동적 리스트를 만듭니다.
ArrayList<Integer> tempList = new ArrayList<>();
// 2. arr 배열의 모든 요소를 확인합니다.
for (int number : arr) {
// 3. 요소가 divisor로 나누어 떨어지는지 확인합니다.
if (number % divisor == 0) {
tempList.add(number); // 나누어 떨어지면 리스트에 추가합니다.
}
}
// 4. 나누어 떨어지는 수가 하나도 없는 경우를 처리합니다.
if (tempList.isEmpty()) {
// -1을 담은 배열을 만들어 반환합니다.
int[] answer = {-1};
return answer;
}
// 5. 리스트를 배열로 변환합니다.
int[] answer = new int[tempList.size()];
for (int i = 0; i < tempList.size(); i++) {
answer[i] = tempList.get(i);
}
// 6. 배열을 오름차순으로 정렬합니다.
Arrays.sort(answer);
// 7. 최종 결과를 반환합니다.
return answer;
}
}
📎 결과

'Java' 카테고리의 다른 글
| [Java] 코딩 17 - 프로그래머스 기출 문제(JAVA) / 핸드폰 번호 가리기 / Day 16 (0) | 2025.07.18 |
|---|---|
| [Java] 코딩 16 - 프로그래머스 기출 문제(JAVA) / 음양 더하기 / Day 15 (1) | 2025.07.16 |
| [Java] 코딩 14 - 프로그래머스 기출 문제(JAVA) / 서울에서 김서방 찾기 / Day 13 (3) | 2025.07.14 |
| [Java] 코딩 13 - 프로그래머스 기출 문제(JAVA) / 콜라츠 추측 / Day 12 (2) | 2025.07.11 |
| [Java] 코딩 12 - 프로그래머스 기출 문제(JAVA) / 두 정수 사이의 합 / Day 11 (2) | 2025.07.10 |