이번 문제를 통해서 오름차순으로 정렬하는 로직을 잘 구현할 수 있게 연스을 많이하는게 목표이다. 아직 문제만보고 코드를 구현하는게 익숙지않아서 의사코드를 사용해서 먼저 생각을해보고 코딩을하는 것이목표이다.
문제를 읽고 이렇게 의사코드를 작성하기로했다.
입력으로 주어진 arr
배열을 순회하며 각 원소를 divisor
로 나눈다
나누어 떨어지는(약수 관계인) 원소를 찾으면 결과 배열에 추가한다.
순회가 끝난 후 결과 배열이 비어있다면 [-1]
을 반환한다.
결과 배열이 비어있지 않다면 정렬하여 반환한다.
// array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수
//divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환
// 입력으로 주어진 arr 배열을 순회하며 각 원소를 divisor로 나눈다
// 나누어 떨어지는(약수 관계인) 원소를 찾으면 결과 배열에 추가한다.
// 순회가 끝난 후 결과 배열이 비어있다면 [-1]을 반환한다.
// 결과 배열이 비어있지 않다면 정렬하여 반환한다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
public int[] solution(int[] arr, int divisor) {
List<Integer> list = new ArrayList<>();
for(int i : arr) {
if(i % divisor == 0) {
list.add(i);
}
}
if(list.isEmpty()) {
return new int[]{-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;
}
}
하루에 하나씩 문제를 푼다는게 정말 쉬운건 아닌것같다. 계속 문제를 생각해야하고 어떤식으로 문제를 해결할지 생각해봐야돼서 정말 쉽지는 않은것같다. 특히 나에게는 조금더 어렵게 느껴졌다.
안녕하세요, 99클럽 그룹 리더 휴 입니다!
코드를 작성하기 전 주석으로 문제를 이해하고자 하신 부분이 인상적이었습니다.
앞으로도 힘내서 매일 TIL 도전해 보세요! 화이팅입니다 :)
99클럽 https://bit.ly/3TN5TBL