[프로그래머스_ Java_Lv1] 하샤드의 수, 음양 더하기

박경희·2025년 2월 13일

코딩테스트

목록 보기
55/69

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: 자리수 줄이기


부호 반전하는 방법

  1. Math.negateExact() 사용

  2. -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;

* -1 사용

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;
    }

0개의 댓글