Algorithm/Programmers

[Level 1][C] 하샤드 수

현식 :) 2020. 3. 26. 17:05
  • 문제

    양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 한다.

    예를 들어 18의 자릿수 합은 1+8=9 이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수이다.

    자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성하여라.

  • 제한 조건

    x는 1 이상, 10000 이하의 정수

  • Example

    Input 1 : 10
    Input 2 : 12
    Input 3 : 11
    Input 4 : 13
    
    Output 1 : true
    Output 2 : true
    Output 3 : false
    Output 4 : false
  • Code

    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    
    bool solution(int x) {
        bool answer = true;              // answer 변수 선언
    
        int temp = x;                    // 정수형 변수 temp에 입력값 x 대입
        int sum = 0;                     // 하샤드 수 판별을 위해 자릿수를 더할 정수형 변수 sum 선언 및 초기화
        int Arr[4];                      // 각 자릿수를 저장할 배열 선언
    
        for(int i=0;i<4;i++) {           // 제한 조건 10000 이하 정수에 따라 4번 반복
            Arr[i]=temp % 10;            // Arr 배열에 각 자릿수 저장
            temp /= 10;                  // temp 는 10으로 나누고 나머지 버림.
            sum += Arr[i];               // sum에 각 자릿수 더함.
        }
    
        if(x%sum == 0) {                 // 입력값 x가 각 자릿수의 합 sum으로 나누어서 0 이면
            answer = true;               // true
        }
        else {                           // 0이 아니면
            answer = false;              // false
        }
        return answer;                   // answer 반환
    }