Language/JAVA

[프로그래머스] 하샤드 수

paran21 2022. 1. 19. 10:17

https://programmers.co.kr/learn/courses/30/lessons/12947

class Solution {
    public boolean solution(int x) {
        boolean answer = true;
        //charAt으로 변환하여 자리수를 계산하기 위해 String으로 변환
        //String num = Integer.toString(x)도 가능
        String num = String.valueOf(x);
        int sum = 0;
        //charAt을 아스키코드에서 숫자로 계산할 때는 '0'(혹은 48)을 빼야 함
        for (int i = 0; i < num.length(); i++) {
            sum += num.charAt(i) - '0';
        }
        //answer = (x % sum == 0) ? true : false;
        //true가 되는 조건을 바로 입력해도 된다.
        return x % sum == 0;
    }
}

다른 답안들 중에 char배열을 만들고 foreach를 써서 바로 더해주는 구문이 인상적이었다.

class Solution {
    public boolean solution(int x) {
        char[] charArr = String.valueOf(x).toCharArray();
        int divisor = 0;
        for (char c : charArr) {
            divisor += (int) c - 48;
        }
        return (x % divisor == 0);
    }
}