프로그래머스 코드카타

프로그래머스 / C# / 하샤드 수 구하기

도도9999 2023. 9. 8. 10:38

프로그래머스 하샤드 수 구하기

하샤드 수 = 정수 x의 자리수 합으로 x가 나누어진다면 하샤드수이다.

(18 -> 1+8=9 -> 18/9=2 -> 하샤드수가 맞다)

 

using System;

public class Solution {
    public bool solution(int x) { // 함수 시작
        int originalX = x; // 변수 선언 (입력값)
        int sumOfDigits = 0; // 변수 선언 (자리수 합을 입력할 변수)

        while (x > 0) { // x가 양수라면, 반복문 시작
            int digit = x % 10; // digit 변수 선언 (x를 10으로 나누어 가장 낮은 자리수 구함)
            sumOfDigits += digit; // 앞의 변수에 digit변수를 합산
            x /= 10; // x를 10으로 나누어, 첫째자리 제거 (후, while문으로 다시 처음으로 돌아가 반복)
        } // x를 반복해서 10으로 나눈 후, 0이 되면 반복문 종료

        return originalX % sumOfDigits == 0; // 오리지널X를 sumofdigits로 나누어 나머지가 0이라면 하샤드수.
    } 
}

x가 12라면,

1. solution 함수가 시작되면 x에 12를 할당.

2. originalX는 12로 할당, sumofdigits는 0으로 할당.

3. 12>0 이기에, whie문 진입

4. digit에 x를 10으로 나눈 나머지 (2)를 할당.

5. sumofdigits에 2를 더함 (sumofdigits = 2가 되었음)

6. 첫째자리수를 제거하고 다음 자리수의 값을 구해, sumofdigits에 더하기 위해 12를 10으로 나눔 (x=1이 되었음)

7. 1>0이기에 while문 다시 진입

8. 1을 10으로 나눈 나머지 1을 digit에 할당

9. sumofdigits에 1을 더함 (sumgofdigits = 3이 되었음) 

10. 1을 10으로 나누면 0

11. 0>0 이 거짓이기에, while문 빠져나옴

12 originalX(12) 나누기 sumofdigits(3) 은 [4, 나머지 0]

13. 나머지가 0으로 맞아떨어졌기에, 12는 하샤드 수가 맞음.