◎ 문제
○ 출처
https://programmers.co.kr/learn/courses/30/lessons/12947
○ 문제 설명
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. |
○ 제한 조건
|
○ 입출력 예
○ 입출력 예 설명
입출력 예 #1 입출력 예 #2 입출력 예 #3 입출력 예 #4 |
○ 작성 예시 코드
public class Solution {
public bool solution(int x) {
bool answer = true;
return answer;
}
}
◎ 나의 문제 풀이
using System;
public class Solution
{
public bool solution(int x)
{
bool answer = true;
int temp_x = x;
int total_sum = 0;
// n에 log10을 취한값을 버림하여 n의 자릿수를 알아냄
double length = Math.Truncate(Math.Log10(temp_x));
// length만큼 10을 제곱하여 각 자릿수를 나눌 숫자를 만든다(ex:3자리수면 100)
int divide = (int)Math.Pow(10, length);
// 최대자리수부터 시작하여 0이될때까지 반복
for (int i = divide; i > 0; i /= 10)
{
// n에서 i로 나누어 몫을 구함 (자릿수)
total_sum += (temp_x / i);
// 자릿수를 구하고 나머지를 다시 대입하여 다음 자릿수로 넘어감
temp_x %= i;
}
// 하샤드 수 판별
answer = x % total_sum == 0 ? true : false;
return answer;
}
}
'프로그래밍 문제 풀이 > C#' 카테고리의 다른 글
[프로그래밍 문제 풀이] 프로그래머스 - 이상한 문자 만들기 (C#) (0) | 2020.07.18 |
---|---|
[프로그래밍 문제 풀이] 프로그래머스 - 시저 암호 (C#) (0) | 2020.07.18 |
[프로그래밍 문제 풀이] 프로그래머스 - 핸드폰 번호 가리기 (C#) (0) | 2020.07.18 |
[프로그래밍 문제 풀이] 프로그래머스 - x만큼 간격이 있는 n개의 숫자 (C#) (0) | 2020.07.17 |
[프로그래밍 문제 풀이] 프로그래머스 - 약수의 합 (C#) (0) | 2020.07.17 |