- 문제
divisible 메소드는 int형 배열 array와 int divisor를 매개변수로 받습니다.
array의 각 element 중 divisor로 나누어 떨어지는 값만 포함하는 새로운 배열을 만들어서 반환하도록 divisible에 코드를 작성해 보세요.
예를들어 array가 {5, 9, 7, 10}
이고 divisor가 5이면 {5, 10}
을 리턴해야 합니다.
이 문제를 푸는데 divisor로 나눠지는 값을 배열에 추가하기만 하면 끝인데 그 방법을 떠올리지 못해
반복문을 한번 더 사용해서 비효율적으로 풀었다.
다른사람의 코드를 보니 비효율적인 방법을 arraylist를 사용해서 해결했다.
또 나는 배열의 크기를 필요한 만큼 받기 위해 반복문을 사용했는데 arraylist를 사용하면 동적으로 배열을 선언할 수 있기 때문에 반복문을 크게 줄일 수 있다.
Arraylist와 Linkedlist는 따로 정리를 해야겠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public int[] solution(int[] arr, int n) { int length = arr.length; int count=0; ArrayList<Integer> list = new ArrayList<>(); for(int i=0; i<length; i++){ if(arr[i]%n == 0) { list.add(arr[i]); } else { count++; if(length == count){ list.add(-1); } } } int answer[] = new int[list.size()]; for(int i =0; i<answer.length; i++){ answer[i] = list.get(i); } Arrays.sort(answer); return answer; } | cs |
나는 위와 같이 정답을 구하는데는 문제가 없지만 비효율적으로 풀었기 때문에 Arraylist를 사용해 효율적으로 구한 답을 보고 공부를 했다.
위 문제의 main에서 출력할 때 Arrays.toString을 사용했는데, for문 없이 배열을 출력 할 수 있게 해준다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Kakao_Blind_Recruitment 1차] 비밀지도 (0) | 2018.09.11 |
---|---|
[Kakao_Blind_Recruitment 1차] 다트게임 (2) | 2018.09.10 |
프로그래머스 스트링을 숫자로 바꾸기 (0) | 2018.04.24 |
프로그래머스 가운데 글자 가져오기 (0) | 2018.04.24 |
프로그래머스 삼각형 출력하기 (0) | 2018.04.23 |
댓글