프로그래머스 나누어 떨어지는 숫자 배열 JAVA 풀이 (정렬, Stream)

2026. 5. 6. 15:01·코테(Solved.ac + Programmers)
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
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 프로그래머스 제일 작은 수 제거하기 JAVA 풀이 (알고리즘, 시간복잡도)
  • 프로그래머스 달리기 경주 JAVA 풀이 (해시맵, 시뮬레이션)
  • 프로그래머스 순위 JAVA 풀이 (그래프, 플로이드워셜, 순위판별)
  • 프로그래머스 단어 퍼즐 JAVA 풀이 (DP, 시간복잡도)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    기출문제
    배열
    정보처리기사
    Level2
    알고리즘
    java
    피보나치
    구현
    정렬
    백준
    level1
    자바
    solved.ac
    코딩테스트
    정처기
    시뮬레이션
    브루트포스
    문자열
    dp
    level0
    정처기오답노트
    완전탐색
    정처기실기
    프로그래머스
    수학
    정보처리기사 실기 기출문제
    자료구조
    springboot
    실기
    백엔드개발자
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
프로그래머스 나누어 떨어지는 숫자 배열 JAVA 풀이 (정렬, Stream)
상단으로

티스토리툴바