C & C++/HackerRank

[HackerRank] Find Digits

와금 2021. 8. 13. 20:06
728x90

https://www.hackerrank.com/challenges/find-digits/problem

 

Find Digits | HackerRank

Calculate the number of digits in an integer that evenly divide it.

www.hackerrank.com

Algorithms > Implementation

 

정수 n이 주어지면 각 자릿수가 n의 약수인지 판별한다.

 

코드

int findDigits(int n) {
    int result = 0, now = n;
    while (now){
        if (now % 10 == 0){
            now /= 10;
            continue;
        }
        else if (n % (now % 10) == 0) result++;
        now /= 10;
    }
    return result;
}

 

설명

약수의 개수를 저장할 정수형 변수 result를 0으로 선언하고,

현재 숫자를 저장할 정수형 변수 now를 n으로 초기화한다.

now가 0보다 클 때 반복되는 while 루프를 이용한다.

now를 10으로 나눈 나머지, 즉 현재 비교하는 자릿수가 0이면 now를 now/10으로 업데이트하고 다음 자릿수로 넘어간다.

현재 비교하는 자릿수가 n의 약수이면 result를 1 증가시키고 now를 now/10으로 업데이트한다.

모든 과정이 끝나면 result를 리턴한다.

 

728x90