문제
하샤드 수 : 문제 링크
문제 분석
- 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 한다. 예를 들어 18의 자릿수 합은 1 + 8 = 9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수이다 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성
- 제한 조건
- x의 자릿수 합을 저장할 정수형 변수 sum을 0으로, x값을 저장할 정수형 변수 temp를 초기화. while loop의 조건문을 temp로 설정하여 temp가 자연수인 동안 반복. temp를 10으로 나눈 나머지를 sum에 저장하고, temp를 10으로 나눈 몫을 temp에 저장. loop 탈출 후, if문을 통해 x를 sum으로 나눈 나머지가 0이라면, 즉 하샤드 수라면 true를 아니라면 false를 return
풀이
using namespace std;
bool solution(int x) {
int sum = 0, temp = x;
while(temp) {
sum += temp % 10;
temp /= 10;
}
if(x % sum == 0) return true;
else return false;
}