하샤드 수 , 나누어 떨어지는 숫자 배열

최수정·2022년 11월 7일
0

알고리즘(자바)

목록 보기
8/12

하샤드 수

  • step1 - 자릿수의 합 구하기
  • step2 - 나누어 떨어지는지 check하기
public class Solutuon {

    public boolean solution(int x) {
        // 자릿수의 합 구하기
        int sumOfDigit = 0;
        while (x > 0) {
            sumOfDigit += x % 10;
            x = x / 10;
        }
        // 나누어 떨어지는 지 확인
        if ((x % sumOfDigit) == 0) {
            return true;
        }
        return false;
    }

나누어 떨어지는 숫자 배열

solution1

public class Solution {
    public int[] solution (int [] arr , int divisor) {
        // 값 나누어 배열에 넣기
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < arr.length; i++) {
            if ((arr[i] / divisor) == 0) {
                list.add(arr[i]);
            }
            if (list.size() == 0) return new int[]{-1};
        }
        // 리스트를 배열로 바꾼다.
        int[] answer = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            answer[i] = list.get(i);
        }
        // 정렬하기
        Arrays.sort(answer);
        return answer;
    }
}

solution2

public class Solution2 {
    public int[] solution(int[] arr, int divisor) {
        // 값 나누어 배열에 넣기
        PriorityQueue<Integer> list = new PriorityQueue<>();
        for (int i = 0; i < arr.length; i++) {
            if ((arr[i] / divisor) == 0) list.add(arr[i]);
        }
        if (list.size() == 0) return new int[]{-1};

        // 큐를 배열로 바꾼다.
        int[] answer = new int[list.size()];
        int idx = 0;
        while (!list.isEmpty()) {
            answer[idx++] = list.poll();
        }
        // 정렬하기
        return answer;
    }
}

0개의 댓글