DINGA DINGA
article thumbnail
Published 2021. 8. 13. 20:06
[HackerRank] Find Digits C & C++/HackerRank
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

'C & C++ > HackerRank' 카테고리의 다른 글

[HackerRank] Print in Reverse  (0) 2021.08.29
[HackerRank] Tree: Level Order Traversal  (0) 2021.08.13
[HackerRank] Cycle Detection  (1) 2021.08.04
[HackerRank] Print the Elements of a Linked List  (0) 2021.08.04
[HackerRank] Sparse Arrays  (1) 2021.07.29