Programmers - 나누어 떨어지는 숫자 배열 (Java) (Lv.1)

2023. 12. 19. 18:41· Coding Test
목차
  1. 문제
  2. 제한사항
  3. 문제 풀이
  4. 풀이 코드

*모든 풀이 코드는 직접 작성하였습니다.

문제

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

제한사항

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

문제 풀이

배열의 요소 중 조건에 맞는 요소들을 오름차순으로 정렬한 배열을 반환하면 된다.
나는 for-each문을 사용해서 배열을 순회한 후, 조건에 맞는 요소를 ArrayList를 만들어 넣었다. 조건에 맞는 요소의 수를 알 수 없으므로 배열 대신 ArrayList를 사용했다.

오름차순으로 정렬 후 ArrayList를 Stream을 사용해서 배열로 변환해서 반환하면 끝이다.

+Stream으로만 풀어도 봤다.

풀이 코드

  1. for-each 문
import java.util.*;

class Solution {
    public int[] solution(int[] arr, int divisor) {

		ArrayList<Integer> list = new ArrayList<Integer>();//새 ArrayList 선언

    	for(int a : arr){ //for-each문 순회
        	if(a % divisor == 0){
            	list.add(a);
        	}
    	}
    	if(list.size() == 0) { //조건에 맞는 요소가 하나도 없다면 -1담은 배열 반환
       	int[] noResult = {-1};
        return noResult;
    	}
    	//순회 후 오름차순 정렬
    	Collections.sort(list);
    	//ArrayList -> 배열 변환후 반환
    	int[] result = list.stream().mapToInt(Integer::intValue).toArray();
    	return result;
	}
}

 

  1. Stream 사용
import java.util.*;

class Solution {
    public int[] solution(int[] arr, int divisor) {
        int[] result = Arrays.stream(arr)
            .filter(n -> n % divisor == 0) // 나눠 떨어지는 것만 필터링
            .sorted() //오름차순 정렬
            .toArray(); //배열로 변환

        if (result.length == 0) {
            result = new int[] {-1};
        }

        return result;
    }
}

'Coding Test' 카테고리의 다른 글

Programmers - 음양 더하기 (Java) (Lv.1)  (0) 2023.12.19
Programmers - 핸드폰 번호 가리기 (Java) (Lv.1)  (0) 2023.12.19
Programmers - 서울에서 김서방 찾기 (Java) (Lv.1)  (1) 2023.12.19
Programmers - 콜라츠 추측 (Java) (Lv.1)  (1) 2023.12.19
Programmers - 두 정수 사이의 합 (Java) (Lv.1)  (0) 2023.12.19
  1. 문제
  2. 제한사항
  3. 문제 풀이
  4. 풀이 코드
'Coding Test' 카테고리의 다른 글
  • Programmers - 음양 더하기 (Java) (Lv.1)
  • Programmers - 핸드폰 번호 가리기 (Java) (Lv.1)
  • Programmers - 서울에서 김서방 찾기 (Java) (Lv.1)
  • Programmers - 콜라츠 추측 (Java) (Lv.1)
킹효준
킹효준
킹효준
King Dev.
킹효준
전체
오늘
어제
  • 분류 전체보기
    • 소식
    • CHZZK
    • Java
      • Error
    • Coding Test
    • Book
      • 테스트 주도 개발 시작하기
      • Clean Code
    • 우아한테크코스
    • 이론
      • OOP

공지사항

  • Velog -> Tistory 블로그를 이전했습니다.

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
킹효준
Programmers - 나누어 떨어지는 숫자 배열 (Java) (Lv.1)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.