본문 바로가기

c언어 스터디/HackerRank

[HackerRank] Find Digits

Find Digits | HackerRank

 

Find Digits | HackerRank

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

www.hackerrank.com

 

 

<문제>

input: 첫번째 줄에는 테스트 케이스의 개수를 입력받고, 
두번째 줄부터는 테스트 케이스 개수만큼 테스트할 숫자를 입력받는다.
output: 입력받은 수의 각 자리 수로 나누어 떨어지는지 테스트 한 후 나눠떨어지는 개수를 리턴한다.

 

 

<코드>

int findDigits(int n) 
{
    int count=0, temp;
    for(int i=n; i>0; i=i/10)
    {
        temp = i%10;
        if(temp ==0)
        continue;
        if(n%temp == 0)
        count++;
    }
    return count;
}

<풀이>

단순하게 변수를 두 개 만들고 하나는 나눠떨어지는 수를 세고, 나머지 하나는 각 자리수를 저장해서 원래 수로 나누면 될 것 같다. 나눠떨어지는 개수를 세기 위해 변수 count를 선언하고, 각 자리수를 저장하기 위한 변수 temp를 선언했다.
for 반복문을 돌면서 temp는 각자리수를 저장하기 위해 10으로 나누고, 매개변수로 전달받은 n을 temp로 나눴을 때 나눠떨어지면 count값을 증가시켰다. 그리고 마지막에 count를 리턴하여 문제를 풀 수 있었다.

 

<실행결과>