728x90
🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12910
📌 문제 개요
정수 배열 arr와 정수 divisor가 주어진다.
배열 원소 중 divisor로 나누어 떨어지는 값만 골라
오름차순으로 정렬한 배열을 반환해야 한다.
만약 나누어 떨어지는 값이 하나도 없다면 [-1] 을 반환한다.
📌 접근 방법
이 문제는 배열을 순회하며 조건에 맞는 값만 추출하면 된다.
이번 풀이에서는 Java Stream API를 사용하여:
- filter() → 조건 필터링
- sorted() → 오름차순 정렬
- toArray() → int[] 변환
과정을 한 번에 처리
또한 결과 배열이 비어있는 경우 {-1}을 반환하도록 처리했다.
📌핵심 아이디어
1. divisor로 나누어 떨어지는 값만 추출
.filter(num -> num % divisor == 0)
2. 오름차순 정렬
.sorted()
3. 결과 배열 반환
return answer.length == 0
? new int[]{-1}
: answer;
📌 전체 코드
package level1;
import java.util.Arrays;
/*
문제-나누어 떨어지는 숫자 배열
[문제 요약]
- 정수 배열 arr와 divisor가 주어진다
- arr 원소 중 divisor로 나누어 떨어지는 값만 추출
- 오름차순 정렬 후 반환
- 없으면 [-1] 반환
[접근 방법]
- Arrays.stream() 사용
- filter()로 divisor 조건 처리
- sorted()로 오름차순 정렬
- toArray()로 int[] 변환
[핵심 아이디어]
- Stream API를 사용하면
필터링 + 정렬 + 배열 변환을 한 번에 처리 가능
- 결과 배열이 비어있으면 {-1} 반환
[처리 흐름]
배열 스트림 생성
→ divisor로 나누어 떨어지는 값 필터링
→ 오름차순 정렬
→ int[] 변환
→ 빈 배열 여부 확인 후 반환
[시간복잡도]
- O(N log N)
(정렬 비용)
*/
public class No18 {
public int[] solution(int[] arr, int divisor) {
int[] answer = Arrays.stream(arr)
.filter(num -> num % divisor == 0)
.sorted()
.toArray();
return answer.length == 0 ? new int[]{-1} : answer;
}
}
📄 정리
이 문제는 단순 구현 문제이지만
Java Stream API 를 사용하면 매우 간결하게 작성할 수 있다.
- filter()
- sorted()
- toArray()
조합은 배열 처리 문제에서 자주 등장하는 패턴이므로 익숙해지는 것이 중요하다.
728x90
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
| 프로그래머스 제일 작은 수 제거하기 JAVA 풀이 (알고리즘, 시간복잡도) (0) | 2026.05.10 |
|---|---|
| 프로그래머스 달리기 경주 JAVA 풀이 (해시맵, 시뮬레이션) (0) | 2026.05.07 |
| 프로그래머스 순위 JAVA 풀이 (그래프, 플로이드워셜, 순위판별) (0) | 2026.05.05 |
| 프로그래머스 단어 퍼즐 JAVA 풀이 (DP, 시간복잡도) (0) | 2026.05.05 |
| 프로그래머스 스타 수열 JAVA 풀이 (그리디, 시간복잡도) (0) | 2026.05.04 |