
public boolean solution(int x) {
int original = x;
int sum = 0;
while (x > 0) {
sum += x % 10;
x /= 10;
}
return original % sum == 0;
}
sum += x % 10 : 1의 자리 구하기
x /= 10: 자리수 줄이기

Math.negateExact() 사용
-1 곱하기
🔥 예외 케이스 주의
int a = Integer.MIN_VALUE;
System.out.println(-a); // 그대로 출력됨: -2147483648
Integer.MIN_VALUE는 -2147483648인데, 양수로 바꾸면 오버플로우 나서 그대로 남아있다.
이건 알고리즘 문제에서 엣지 케이스로 자주 나온다.
Math.negateExact() 사용public static int solution(int[] absolutes, boolean[] signs) {
int sum = 0;
for (int i = 0; i < signs.length; i++) {
if (signs[i] == true) {
sum += absolutes[i];
} else if (signs[i] == false) {
sum += Math.negateExact(absolutes[i]);
}
}
return sum;
public static int solution(int[] absolutes, boolean[] signs) {
int answer = 123456789;
int sum = 0;
for (int i = 0; i < signs.length; i++) {
if (signs[i] == true) {
sum += absolutes[i];
} else if (signs[i] == false) {
sum += (absolutes[i] * -1);
}
}
return sum;
public int solution(int[] absolutes, boolean[] signs) {
int sum = 0;
for (int i = 0; i < signs.length; i++) {
sum += absolutes[i] * (signs[i] ? 1 : -1);
}
return sum;
}