[C++] 프로그래머스 하샤드 수
반응형
programmers.co.kr/learn/courses/30/lessons/12947
1. 서론
간단하게 풀 수 있는 level 1 문제이다.
2. 문제 풀이
양의 정수가 있다. 그 정수의 각 자릿수를 더한 값을 원래 정수 값과 나눴을 때 딱 떨어지면 그걸 하샤드 수라고 한다.
하샤드 수인 경우에는 true를, 아닌 경우에는 false를 return 하는 함수이다.
예를 들어 정수가 18일 경우,
1 + 8 = 9 => 18 / 9 = 2 ... 0 => true
정수를 각 자릿수로 단위로 나눌 경우 나머지를 활용하는 게 쉬워서 그렇게 풀었다.
정수에 10의 나머지 값을 계속 저장하고 원래의 정수는 10으로 나누는 것이다.
3. 코드 설명
#include <string>
#include <vector>
using namespace std;
bool solution(int x) {
bool answer = true;
int n = x, c = 0;
while (1)
{
c += n % 10;
n /= 10;
if (n == 0) break;
}
if (x % c != 0)
answer = false;
return answer;
}
n은 각 자릿수를 계산하기 위한 수, c는 각 자릿수를 다 더한 값이다.
n을 10으로 나눴을 때 나머지 값을 c에 저장하고 n은 10으로 나눠준다. 그럼 각 자릿수를 저장할 수 있다.
그리고 n이 0이 됐을 때는 각 자릿수의 저장이 끝난 경우이므로 반복문을 멈춘다.
그리고 원래 정수인 x와 c를 비교해 값을 return 해준다.
반응형
'Algorithm' 카테고리의 다른 글
[C++] 프로그래머스 행렬의 덧셈 (0) | 2020.12.10 |
---|---|
[C++] 프로그래머스 핸드폰 번호 가리기 (0) | 2020.12.10 |
[C++] 프로그래머스 평균 구하기 (0) | 2020.12.10 |
[C++] 프로그래머스 콜라츠 추측 (0) | 2020.12.08 |
[C++] 프로그래머스 최대공약수와 최소공배수 (0) | 2020.12.08 |