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 반환 }