[프로그래머스] Java 코딩테스트 Lv.1 - 나누어 떨어지는 숫자 배열

yihyun·2025년 4월 24일

코딩테스트

목록 보기
75/105
post-thumbnail

나누어 떨어지는 숫자 배열

✅ 문제 설명

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

✅ 제한사항

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

🔽 소스코드 1

💻 풀이

  • divisor과 나눠서 0이 되는 숫자를 담을 배열 numList를 선언해주고,
  • 적절한 값이 없을 것을 고려해 0번 인덱스에 -1을 넣어준다.
  • 이후 배열을 순회하며 적합한 값이 있을 경우 numList[]에 값을 넣고 인덱스인 j를 1 추가해준다.
  • 오름차순으로 반환해야 하기 때문에 Arrays.sort()를 사용해 정렬해주고, 유효한 값이 있는 j 인덱스 까지 반환해준다.
  • 만약 일치하는 값이 없을 경우 즉, j 가 0일 경우 -1이 담긴 배열을 return 한다.

시간 0.16ms ~ 1.46ms

	public int[] solution(int[] arr, int divisor) {
		
		int[] numList = new int[arr.length];
		numList[0] = -1;
		int j = 0;
		
		for(int i = 0; i < arr.length; i++) {
			if(arr[i] % divisor == 0) {
				numList[j] = arr[i];
				j++;
			}
		}
		
		if(j == 0) {
			return Arrays.copyOf(numList, 1);
		}
		
		
		numList = Arrays.copyOf(numList, j);
		Arrays.sort(numList);
		
		
		return numList;
	}
profile
개발자가 되어보자

0개의 댓글