💡 코테/99클럽

[ 99클럽 코테 스터디 9일차 TIL ] 나누어 떨어지는 숫자 배열

MNY 2024. 4. 5. 23:40
728x90
반응형
💡 오늘의 학습 키워드

- 나누어 떨어지는 숫자 배열

 

 

오늘의 회고

문제1  : [나누어 떨어지는 숫자 배열]

  • 어떤 문제가 있었고, 나는 어떤 시도를 했는지

입력값은 배열, 변수 1개씩이다. 배열의 각 요소를 입력받은 변수로 나누었을 때 나뉘어지는 요소들을 오름차순으로 정렬해서 리턴하는 문제였다.

 

일단 반복문을 돌며 각 요소가 입력받은 변수로 나누어지는지 확인하는 걸 먼저 생각했다.

그러면서 배열의 크기를 알려줘야 하는데 이 부분은 생각하다가.. 배열을 전부 돌며 나뉘어지면 re_len이라는 변수를 1증가 시키는 방법을 사용했다.

마지막으로 배열의 크기 즉, re_len이라는 변수가 0일 경우는 크기가 1인 배열에 -1 값을 넣어 리턴해주는 걸 추가해줬다. 

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

  • 어떻게 해결했는지
// 입력 : 1이상 10,000이하 정수(x)
// 입력 : 배열(arr), 나눌 값(divisor)
// 변수 : 배열의 크기(len), 리턴 배열의 크기(re_len), 리턴 배열의 인덱스(re_idx)

// 배열의 크기만큼 반복문
    // 배열의 요소가 divisor로 나뉘어진다면 re_len++
// re_len의 값이 0이면 크기가 1인 배열에 -1값을 넣어 리턴
// 리턴할 배열 선언 및 크기 할당
// 배열의 크기만큼 반복문
    // 배열의 요소가 divisor로 나뉘어진다면 answer[re_idx]에 넣기
    // re_idx++;
// sort()를 이용한 정렬

// return : 배열의 각 요소가 divisor로 나누어 떨어지는 값(오름차순)
// 나누어 떨어지는 요소가 없다면 배열의 값에 -1 넣어서 반환

import java.util.Arrays;

class Solution {
    public int[] solution(int[] arr, int divisor) {
        int len = arr.length;
        int re_len = 0;
        int re_idx = 0;
        
        for (int i = 0; i < len; i++) {
            if (arr[i] % divisor == 0)
                re_len++;
        }
        if (re_len == 0) {
            int[] answer = {-1};
            return answer;
        }
        int[] answer = new int[re_len];
        for (int i = 0; i < len; i++) {
            if (arr[i] % divisor == 0){
                answer[re_idx] = arr[i];
                re_idx++;
            }
        }
        Arrays.sort(answer);
        
        return answer;
    }
}

 

  • 무엇을 새롭게 알았는지

문제를 다 풀이한 후 다른 사람들의 풀이를 봤다.

그러면서 뭔가 신기한 풀이들을 보았다.. 자세히 보지 않아 아직 어떤 방식으로 그 코드들이 동작하는지 이해하지는 못했지만, 굉장히 짧고 효율적으로 풀이했다는 댓글이 달린 코드와 가독성이 좋다는 댓글이 달린 코드가 있었다. 짧고 효율적인 것을 지향하는 것도 좋지만, 기왕이면 현재의 수준에서는 가독성을 높이는 방식이 기본이라고 생각했다.

 

내일 학습할 것은 무엇인지

  • 빅분기 자격증 최종 정리
  • 백준 기본 문제 1개 풀이
  • 자바 형변환 정리
  • 클럽99 코딩테스트
728x90
반응형