알고리즘 풀이 방법입니다.
문제(Problem) -> 생각(Think) -> 해결책(Solution) -> 리뷰(Review) 를 통해서 정리해서 작성합니다.
Problem📄
https://programmers.co.kr/learn/courses/30/lessons/12910
코딩테스트 연습 - 나누어 떨어지는 숫자 배열
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하
programmers.co.kr
Think🤔
나눠서 오름차순 후 정답 구하는 문제
Solution✍
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public int[] solution(int[] arr, int divisor) {
ArrayList<Integer> tmp = new ArrayList(); // ArrayList로 만들고 옮기기
for(int i=0; i<arr.length; i++){
if(arr[i] % divisor == 0){
tmp.add(arr[i]);
}
}
int answer[] = new int[tmp.size()];
if(tmp.size() == 0){
return new int[]{-1};
}else{
Collections.sort(tmp);
for(int i=0; i<tmp.size(); i++){
answer[i] = tmp.get(i);
}
}
return answer;
}
}
ArrayList를 사용하지 않는다면 int 타입 배열의 크기를 잘 설정해야됨..
return new int[]{-1}; 을 이용해서 바로 배열을 리턴할 수 있음
Review🤩
한 줄 코드 스트림 참조
import java.util.Arrays;
import java.util.Collections;
class Solution {
public int[] solution(int[] arr, int divisor) {
int[] answer = Arrays.stream(arr).sorted().filter(factor -> factor % divisor == 0).toArray();
if(answer.length == 0){
answer = new int[] {-1};
}else{
return answer;
}
}
}
전 정답은 정렬이 안되어 있어서 정렬 부분을 추가시켜줬다.
stream() 메서드 뒤에 sorted() 메서드를 추가 시킨 후 람다를 사용하면 된다.
.count()가 스트림의 사이즈나 길이를 재주는건데 중간에 삽입해봤는데 에러떠서 length를 비교하는 방법 사용
'Algorithm' 카테고리의 다른 글
[프로그래머스] GROUP BY 3문제 (0) | 2022.06.30 |
---|---|
[프로그래머스] Summer/Winter Coding(~2018)예산 (0) | 2022.05.06 |
[프로그래머스] 완주하지 못한 선수 (0) | 2022.03.16 |
[프로그래머스] 나머지가 1이 되는 수 찾기 , 같은 숫자는 (0) | 2022.03.09 |
[백준] 추월 (0) | 2022.03.08 |