n이라는 int 범위 안의 수가 들어오고, n을 n의 자릿수로 나눴을 때 나머지가 0인 개수를 리턴하면 된다.
배열을 사용하면 0일 때를 처리하기가 애매해서 사용하지 않았는데, 0을 제외한 자릿수를 넣어주면 됐을 거라는 생각이 든다. 잦은 실수로 코드를 계속 수정했는데, 0으로 나눌 수 없는 것과 나머지를 구한다는 것을 주의하면 된다.
int findDigits(int n) {
int an = 0, temp = n;
while(temp){
if(temp%10){
if(n%(temp%10)==0) an++;
}
temp /= 10;
}
return an;
}
먼저 자릿수를 바로 구해 나머지로 계산해줬다. n을 계속 써야 하는 것을 고려해 temp에 n을 넣어주었다. while문으로 temp가 0이 아닐때까지 반복해주고, if문으로 temp%10이 0이 될 것을 고려해 제외해줬다. 0이 아닌 수를 거른 후 n을 temp%10으로 나눈 나머지가 0일 때 an을 +1해준다. 그리고 temp를 10으로 나눈다.
'HackerRank > Algorithms' 카테고리의 다른 글
[HackerRank] Warmup > Diagonal Difference (0) | 2021.08.14 |
---|---|
[HackerRank] Warmup > Compare the Tripets (0) | 2021.08.14 |
[HackerRank] Implementation > Drawing Book (0) | 2021.08.08 |
[HackerRank C] Implementation : Angry Professor (0) | 2021.08.01 |
[HackerRank C] Warmup : Simple Array Sum (0) | 2021.07.28 |