프로그래머스 lv.1 문제
사실 문제가 어려워서 글을 작성하는 것이 아니고
'자바 - 컬렉션과 제네릭' 파트 부분이 많이 부족하다는 것은 인지 하고 있었지만
제가 10줄이 넘어가게 코드를 짤 동안 이것을 아는 사람들은 1~2줄 만에 끝내버리는 격차를 발견 후
살짝 현타가 와서 정리합니다 ㅋㅋㅋㅋㅋ
늦기 전에 다시 공부하기 ㅠㅠ 컬렉션 제네릭 람다식..
[문제 설명]
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
[제한사항]
- arr은 자연수를 담은 배열입니다.
- 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
- divisor는 자연수입니다.
- array는 길이 1 이상인 배열입니다.
[입출력 예]
arr divisor return
[5, 9, 7, 10] 5 [5, 10]
[2, 36, 1, 3] 1 [1, 2, 3, 36]
[3,2,6] 10 [-1]
[문제 풀이]
1. arr 배열에 있는 수를 divisor로 나누어 떨어지면 ArrayList에 add
2. ArrayList를 다시 asnwer로 옮긴 후 정렬해서 return
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import java.util.ArrayList; import java.util.Arrays; class Solution { public int[] solution(int[] arr, int divisor) { //int[] answer = {}; ArrayList<Integer> arr_list = new ArrayList<Integer>(); int cnt=0; for(int i=0; i<arr.length; i++){ if(arr[i]%divisor == 0){ arr_list.add(arr[i]); } } if(arr_list.size()==0){ arr_list.add(-1); } int[] answer = new int[arr_list.size()]; for(int j=0; j<arr_list.size(); j++){ answer[j] = arr_list.get(j); } Arrays.sort(answer); return answer; } } | cs |
위의 내용을 이렇게도 풀 수 있습니다!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import java.util.Arrays; class Solution { public int[] solution(int[] arr, int divisor) { int[] answer = Arrays.stream(arr).filter(factor -> factor % divisor == 0).toArray(); int[] answer_null = {-1}; Arrays.sort(answer); if(answer.length==0) { return answer_null; } else return answer; } } | cs |
오히려 어려운 문제 풀었을 때 보다 이렇게 내가 어리석다는 것을 깨달을 때가 더욱 자극 되는 것 같습니다.
(관련 내용 정리하기 ~)
'알고리즘 공부 > 알고리즘 문제' 카테고리의 다른 글
트리 dfs 탐색 (0) | 2021.04.23 |
---|---|
백준 (2178) - 미로탐색 (java) (0) | 2019.06.04 |
문자열 내 맘대로 정렬하기 (0) | 2019.03.12 |
빙고 개수 카운트하기 (0) | 2019.01.31 |
배열 회전 결과값 확인하기 (1) | 2019.01.26 |