문제 설명
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 안니지 검사하는 함수, solution을 완성해주세요.
제한사항
- x는 1이상, 10000 이하인 정수입니다.
입출력 예
x | return | 설명 | ||
10 | true | 10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다. | ||
12 | true | 12의 모든 자릿수의 합은 3입니다. 12은 3로 나누어 떨어지므로 12은 하샤드 수입니다. | ||
11 | false | 11의 모든 자릿수의 합은 2입니다. 11은 2로 나누어 떨어지지 않으므로 11은 하샤드 수가 아닙니다. | ||
13 | false | 13의 모든 자릿수의 합은 4입니다. 13은 4로 나누어 떨어지지 않으므로 13은 하샤드 수가 아닙니다. |
문제 풀이
풀이 언어 : C++
#include <string>
#include <vector>
#include <cmath>
using namespace std;
bool solution(int x) {
bool answer = true;
int dismantleNum;
int myX=x;
int xSum=0;
// 해체 하여 합 구하기
for(int i=to_string(x).size()-1; i>-1; i--)
{
dismantleNum=myX/pow(10, i);
myX-=dismantleNum*pow(10, i);
xSum+=dismantleNum;
}
// 나누어 떨어지는지 확인하기
if(x%xSum==0) answer=true;
else answer=false;
return answer;
}
이전의 문제들과 같이 이것도 정수를 해체하는 것부터 시작한다. 전과 같은 알고리즘으로 정수를 해체하여 합을 구한다.
https://iiblueblue.tistory.com/64
[2024.12.14] 자릿수 더하기
문제 설명자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.예를 들면 N=123이면 1+2+3=6을 return 하면 됩니다 제한사항N의 범위 : 100,000,000 이하의 자연
iiblueblue.tistory.com
그리고 마지막만 처리를 조금 추가해주면 된다. x를 xSum으로 나눴을 때 나머지가 0인 경우만 answer을 true로하고 나머지의 경우 false로 하면 나누어떨어지는지 확인할 수 있다.
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12947
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
'Code KATA > 알고리즘 코드카타' 카테고리의 다른 글
[2024.12.24] 콜라츠 추측 (0) | 2024.12.24 |
---|---|
[2024.12.23] 두 정수 사이의 합 (0) | 2024.12.23 |
[2024.12.21] 정수 내림차순으로 배치하기 (0) | 2024.12.23 |
[2024.12.20] 정수 제곱근 판별 (0) | 2024.12.20 |
[2024.12.19] 문자열을 정수로 바꾸기 (0) | 2024.12.19 |