발자취
[프로그래머스 Lv.1 / C언어] Day17. 하샤드 수 본문
2024. 06. 03 - 코딩테스트 스터디 Day17
01. 문제 설명
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
02. 제한사항
- x는 1 이상, 10000 이하인 정수입니다.
03. 입출력 예
| x | return |
| 10 | true |
| 12 | true |
| 11 | false |
| 13 | false |
04. 풀이 및 답
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
bool solution(int x) {
bool answer = true;
int num = x;
int sum = 0;
for (int i = 0; num > 0; i++) {
sum += num % 10;
num /= 10;
}
if (x % sum != 0) {
answer = false;
}
return answer;
}
우선 x의 값이 변경되지 않고 보존되게 하기 위하여 새로 만든 변수 num에 x의 값을 저장해줬다.
num의 값을 10으로 나눈 나머지를 sum에 저장하고, num을 10으로 나눠준다.
이 과정을 num이 0이 되기 전까지 반복해주면, sum에는 x의 자릿수의 합이 저장된다.
x값과 sum값을 비교하여 0이 아니면 'false'를, 0이면 default 값인 'true'를 return 해준다.

오늘도 한 번에 성공했다!

야호
'코딩테스트 > Daily Coding (C, C++)' 카테고리의 다른 글
| [백준 / C언어] Day19. 덱 2 (28279) (0) | 2024.06.05 |
|---|---|
| [백준 / C언어] Day18. 요세푸스 문제 0 (11866) (0) | 2024.06.04 |
| [프로그래머스 Lv.1 / C언어] Day16. 평균 구하기 (0) | 2024.06.02 |
| [프로그래머스 Lv.1 / C언어] Day15. 짝수와 홀수 (0) | 2024.06.01 |
| [백준 / C언어] Day14. 카드 2 (2164) (0) | 2024.05.30 |