문제 출처:https://leetcode.com/problems/self-dividing-numbers/
문제 분석
각 숫자를 이루고 있는 원소들로 나누어서 나머지가 없는 수를 self dividing number라고 하나봅니다. 주어진 Input left와 right 사이의 모든 숫자에 대해서 self dividing number를 구하는 문제입니다. 예를 들어 128이라고 하면 1, 2, 8로 128을 나눈 나머지가 없으면 성립됩니다.
코드는 다음과 같습니다:
class Solution {
public:
vector<int> selfDividingNumbers(int left, int right) {
vector<int> answer ;
for(int i = left ; i <= right ; i++){
if(is_self(i))
answer.push_back(i) ;
}
return answer ;
}
bool is_self(int num){
int k = num ;
while(k != 0){
if(k % 10 == 0)
return false ;
if((num % (k % 10)) != 0)
return false ;
k /= 10 ;
}
return true ;
}
};
해당 문제는 Github에서도 보실 수 있습니다:
https://github.com/gurcks8989/CodingTest/blob/master/LeetCode/P728_Self_Dividing_Numbers.cpp
훈수 및 조언은 언제든 환영입니다.