프로그래머스 나누어 떨어지는 숫자 배열 (99클럽 코딩테스트 9일차 TIL)

KIMYEONGJUN·2024년 4월 5일
0
post-thumbnail

목표

이번 문제를 통해서 오름차순으로 정렬하는 로직을 잘 구현할 수 있게 연스을 많이하는게 목표이다. 아직 문제만보고 코드를 구현하는게 익숙지않아서 의사코드를 사용해서 먼저 생각을해보고 코딩을하는 것이목표이다.

문제

문제를 읽고 이렇게 의사코드를 작성하기로했다.

입력으로 주어진 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;
    }
}

마무리

하루에 하나씩 문제를 푼다는게 정말 쉬운건 아닌것같다. 계속 문제를 생각해야하고 어떤식으로 문제를 해결할지 생각해봐야돼서 정말 쉽지는 않은것같다. 특히 나에게는 조금더 어렵게 느껴졌다.

profile
Junior backend developer

2개의 댓글

comment-user-thumbnail
2024년 4월 28일

안녕하세요, 99클럽 그룹 리더 휴 입니다!
코드를 작성하기 전 주석으로 문제를 이해하고자 하신 부분이 인상적이었습니다.
앞으로도 힘내서 매일 TIL 도전해 보세요! 화이팅입니다 :)
99클럽 https://bit.ly/3TN5TBL

1개의 답글