프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/12910)
자바 초급 문제의 나누어 떨어지는 숫자 배열 이다.
문제 설명
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
제한사항
-
arr은 자연수를 담은 배열입니다.
-
정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
-
divisor는 자연수입니다.
-
array는 길이 1 이상인 배열입니다.
재미있어하며 풀었던 다른 문제이다. 오늘은 하루종일 문제를 풀면서 신나했다.
주석을 보면 무슨 생각을하며 코드를 적어내려갔는지 아실거라고 생각이 든다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
package programmers_나누어떨어지는숫자배열;
import java.util.*;
public class subClass {
public int[] solution(int[] arr, int divisor) {
int[] answer = new int[1];
// arr은 숫자의 배열 divisor는 나누는 수
// arr의 수를 divisor로 나누어봤을 때 나누어지는 수가 있으면 나누어지는 수를 배열에 담아 리턴
// 나누어지는 수가 아무것도 없으면 -1 리턴
int[] reverse = new int[arr.length];
Arrays.sort(arr); // 내림차순 정렬
ArrayList<Integer> saveList = new ArrayList<>();// 약수를 넣어 줄 임시 리스트
boolean check;// false
for (int i = 0; i < arr.length; i++) {
reverse[i] = arr[arr.length - 1 - i];
} // 역순으로 값 나열
for (int i = 0; i < reverse.length; i++) {// reverse 의 인덱스 1개당 나눌 수들이 있다는 것을 알아둬야한다.
if (reverse[0] < divisor) {// 나누는 수가 배열의 가장 큰수보다 크다면 나눌 수 없게됨 그외 만약 나눌 수 있는 수가 없을때를 가정해야함
saveList.add(-1);
break;
} else {// 아니면 나눗셈 시작 만약 reverse[i] % divisor 가 0 이 나오면 reverse[i]를 answer에 대입시켜야함 즉
// answer의 초기값은 계속변함
if (reverse[i] % divisor == 0) {
saveList.add(reverse[i]);// saveList에 reverse[i] 값 대입
}
continue;// <<< 쓸데없는 코드가 아닐까?
}
// 여기에 제어문 포인트를 줘야할 듯 함.
} // for 문이 다 돌았는데 saveList.size()가 0 라면 아무것도 나눌 수가 없었다는 건데
if (saveList.size() > 0) {
answer = new int[saveList.size()];// saveList 만큼의 배열로 확장
for (int i = 0; i < answer.length; i++) {
answer[i] = saveList.get(i);
System.out.println(answer[i]);
}
Arrays.sort(answer);
} else if (saveList.size() == 0) {
answer = new int[1];
answer[0] = -1;
}
return answer;
}
}
|
cs |
'자바 초급문제로 맨땅에 해딩하기' 카테고리의 다른 글
자바 초급문제 20. 문자열 내 p와 y의 개수 (0) | 2020.04.11 |
---|---|
자바 초급문제 19. 두정수사이의합 (0) | 2020.04.11 |
자바 초급문제 17. 가운데 글자 가져오기 (0) | 2020.04.11 |
자바 초급문제 5-1. 같은 숫자는 싫어 다시 접근하기. (0) | 2020.04.11 |
자바 초급문제 8-1. 핸드폰 번호 가리기 다시접근하기 (0) | 2020.04.11 |