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

위서연·2023년 4월 12일

Programmers N일차 나누어 떨어지는 숫자 배열

1차 시도

class Solution {
    public int[] solution(int[] arr, int divisor) {
        int cnt = 0;
        int j = 0;

        for (int i = 0; i < arr.length; i++) {
            if (arr[i] % divisor == 0) {
                cnt++;
            }
            if (cnt == 0) {
                int[] answer = {-1};
                return answer;
            }
        }
                                       
   // result 배열의 크기 구하기
                                       
                                       
        
        int[]answer = new int[cnt];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] % divisor == 0) {
                 answer[j] = arr[i];
                j++;
            }
        }
            Arrays.sort(answer);
            return answer;
    }
}
  
 // 구한 크기로 for문 돌면서 arr[i]번째 값을 answer에 값에 넣기

2차 시도

import java.util.ArrayList;
import java.util.Arrays;


class Solution {
  public int[] solution(int[] arr, int divisor) {
      int answer[] = {};
      ArrayList<Integer> tmp = new ArrayList<Integer>();
      
      for (int i = 0; i < arr.length; i++) {
          if (arr[i] % divisor == 0) {
              tmp.add(arr[i]);
          }
      
      }
      if (tmp.isEmpty()){
          tmp.add(-1);
      }
      answer = new int[tmp.size()];
      for (int i = 0; i <tmp.size(); i++){
          answer[i] = tmp.get(i);
      }
      
      Arrays.sort(answer);
      
      return answer;
  }
}




👍 내생각
왜 자꾸 코드 실행은 되는데 제출 후 채점하면 오류가 날까
이 문제 말고 다른 문제들도 실행은 되는데 채점은 안된다

for문을 사용해서 각 배열/ArrayList를 돌면서 divisor이랑 나눠지는지 확인하고 true면 result 배열/ArrayList에 추가할 수 있도록 하였다.




🤔배운내용
for문 쓰는게 그래도 어느정도 익숙해지고 있는거 같다
아직 다중 for문은 조금 헷갈리기는 한다

2차시도 때는 배열에 별도로 값을 추가해주는 것이 아니라 ArrayList를 활용해서 문제를 풀었다
배열은 사이즈가 정해져있기 때문에 데이터를 마음대로 추가할 수 없으나 ArrayList는 add 매서드를 활용해서 추가 가능하다.
ArrayList 자체에 sort를 사용할 수 없으니, tmp(ArrayList)를 만들어 값들을 tmp에 저장해놓고, 저장된 값을 다시 answer이라는 배열에 추가하는 방식으로 구현했다.

import java.util.Arrays;
import java.util.Arrays;
요거를 맨 위에 안 써줘서 한 10분동안 내 코드를 의심하는 시간을 가졌다..

0개의 댓글