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 이상인 배열입니다. 입출력 예 arr divi
programmers.co.kr
<나누어 떨어지는 숫자 배열>
○ 처음 푼 풀이 (2020.02.23)
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
|
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int divisor) {
// divisor로 나누었을때 떨어지면 count 증가시켜서 개수 세기
int count = 0;
for(int i=0;i<arr.length;i++) {
if(arr[i]%divisor==0) {
count++;
}
}
// answer 배열의 배열방은 나누어 떨어진 개수만큼 만들기
int[] answer = new int[count];
count = 0;
for(int i=0, j=0;i<arr.length;i++) {
if(arr[i]%divisor==0) {
answer[j] = arr[i];
count++;
j++;
}
}
if(count==0) {
answer = new int[1];
answer[0] = -1;
}
Arrays.sort(answer);
return answer;
}
}
|
cs |
- divisor로 나누었을때 나누어 떨어지면 answer에 해당하는 수이기 때문에 일단 그 수만큼 배열방 만들기
- arr의 각 번지수가 divisor로 나누어 떨어지면 answer에 담아내기
- 담아내면서 카운트를 증가시키고, 카운트가 0일 경우 나누어떨어지는 수가 없다고 판단
- 카운트가 0일경우 answer를 길이 1개로 선언하고 -1로 설정하기
- 담겨진 answer 배열 sort()함수로 정렬하기
○ 참고할 풀이
1
2
3
4
5
6
7
8
|
import java.util.Arrays;
class Divisible {
public int[] divisible(int[] array, int divisor) {
//ret에 array에 포함된 정수중, divisor로 나누어 떨어지는 숫자를 순서대로 넣으세요.
return Arrays.stream(array).filter(factor -> factor % divisor == 0).toArray();
}
}
|
cs |
- 람다식 활용
--------------------------------------------------------------------------------------------------------------------------
다시 푼 풀이 (2020.04.19)
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
|
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int divisor) {
int[] temp = new int[arr.length];
int j=0;
int count = 0;
for(int i=0;i<arr.length;i++) {
if(arr[i]%divisor == 0) {
temp[j++] = arr[i];
count++;
}
}
int[] answer = {};
if(count==0) {
answer = new int[1];
answer[0] = -1;
}else {
answer = Arrays.copyOfRange(temp, 0, j);
Arrays.sort(answer);
}
return answer;
}
}
|
cs |
- 나누어떨어졌을때 0이면 temp배열에 옮겨 담는다.
- 담을때마다 카운트를 세서 카운트가 0이면 -1을 담고,
0이 아니면 증가된 j의 수까지만 배열을 잘라서 answer에 담아준다.
- sort함수로 정렬한다.
재 풀이 (2020.05.03)
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
|
import java.util.*;
class Solution {
public int[] solution(int[] arr, int divisor) {
int[] answer = {};
int[] temp = new int[arr.length];
int j = 0;
for(int i=0;i<arr.length;i++)
{
if(arr[i]%divisor == 0)
{
temp[j++] = arr[i];
}
}
if(j==0)
{
answer = new int[1];
answer[0] = -1;
}
else
{
answer = Arrays.copyOfRange(temp, 0, j);
Arrays.sort(answer);
}
return answer;
}
}
|
cs |
- count 사용하지 않고 증가한 j로 체크
'코테 > 프로그래머스' 카테고리의 다른 글
문자열 내 마음대로 정렬하기/java/프로그래머스/Level1 (0) | 2020.02.23 |
---|---|
같은 숫자는 싫어/java/프로그래머스/Level1 (0) | 2020.02.23 |
문자열 내림차순으로 배치하기/java/프로그래머스/Level1 (0) | 2020.02.23 |
K번째수/java/프로그래머스/Level1 (0) | 2020.02.16 |
시저 암호/java/프로그래머스/Level1 (0) | 2020.02.16 |