songdev
songdev
songdev
전체 방문자
오늘
어제
  • 분류 전체보기 (78)
    • Web 개발 (6)
    • 리눅스 (5)
    • git (5)
    • Bigdata (8)
      • 하둡 Architecture 번역 (6)
      • Ambari (2)
    • 코테 (22)
      • 프로그래머스 (22)
    • 자격증 (7)
      • 정보처리기사 (5)
      • SQLD (2)
    • 스터디 (18)
      • 웹 프로그래밍 (3)
      • 개념정리 (4)
      • 예제 (6)
      • 바닐라 JS로 크롬 앱 만들기 (5)
    • 일상 (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • javascript
  • 배열
  • 리눅스
  • Java
  • charAt()
  • sort()
  • SQLD
  • 깃허브
  • level1
  • 정렬
  • 프로그래머스
  • 배열의 복사
  • 정보처리기사
  • github push
  • 향상된 버블정렬
  • 자바스크립트
  • github
  • 정보처리기사 필기
  • parseInt()
  • copyOfRange()

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
songdev

songdev

나누어 떨어지는 숫자 배열/java/프로그래머스/Level1
코테/프로그래머스

나누어 떨어지는 숫자 배열/java/프로그래머스/Level1

2020. 2. 23. 14:57
반응형

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;
  }
}
Colored by Color Scripter
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();
    }
}
Colored by Color Scripter
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;
  }
}
Colored by Color Scripter
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;
    }
}
Colored by Color Scripter
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
    '코테/프로그래머스' 카테고리의 다른 글
    • 문자열 내 마음대로 정렬하기/java/프로그래머스/Level1
    • 같은 숫자는 싫어/java/프로그래머스/Level1
    • 문자열 내림차순으로 배치하기/java/프로그래머스/Level1
    • K번째수/java/프로그래머스/Level1
    songdev
    songdev

    티스토리툴바