LeetCode #728 SelfDividingNumbers. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,그래프,Graph,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접, 데이터베이스, sql, query, 쿼리
It's been a long time..
아주 오랜만에..
Runtime: 0 ms, faster than 100.00% of C++ online submissions for Self Dividing Numbers.
Memory Usage: 6.3 MB, less than 97.68% of C++ online submissions for Self Dividing Numbers.
LeetCode #728
Q.
A self-dividing number is a number that is divisible by every digit it contains.
For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.
Also, a self-dividing number is not allowed to contain the digit zero.
Given a lower and upper number bound, output a list of every possible self dividing number, including the bounds if possible.
self-dividing number 는 해당 숫자의 모든 각각의 자릿수로 해당 숫자를 나눌 수 있는 숫자를 말한다.
예를 들면, 128 은 self-dividing number 이다. 왜냐면 128 % 1 == 0, 128 % 2 == 0, 그리고 128 % 8 == 0 이다.
또한, self-dividing number 는 자릿수 중에서 0 을 포함하지 않는다.
작은수와 큰수의 범위가 주어지고, 그 안에서 모든 self-dividing number 를 찾아서 반환해라.
Example 1:
Input: left = 1, right = 22
Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]
Note:
- The boundaries of each input argument are 1 <= left <= right <= 10000.
- 입력받는 인자는 1 <= left <= right <= 10000 이다.
Process
// Process
//1. Input left (begin number) and right (end number)
//2. Iterate from left to right (i)
// 2.1. Iterate every digit of number
// 2.1.1. Check if it's divisible or not
// 2.1.1.1. If not -> make flag false
// 2.2. If flag is true -> add to resultVector
//3. Return resultVector
// 처리과정
//1. 바운더리 left, right (시작값, 끝값) 입력 받는다.
//2. 시작부터 끝까지 반복한다. (i)
// 2.1. 해당 숫자의 모든 자릿수를 반복한다.
// 2.1.1. 자릿수로 해당 숫자가 나눠지는지 확인해서
// 2.1.1.1. 안나눠지면 flag 를 false 로 바꾼다.
// 2.2. flag 를 확인해서 true 일 때만 (self-dividing number 일 때만) resultVector 에 넣는다.
//3. resultVector 반환한다.
Code.. lemme see example code!!!
코드.. 예제코드를 보자!!!
class Solution {
public:
vector<int> selfDividingNumbers(int left, int right) {
vector<int> resultVector;
int residue = 0;
for (int i = left; i <= right; ++i)
{
bool isValid = true;
int number = i;
int quotient = number / 10;
int remainder = number % 10;
while (number != 0 && isValid)
{
remainder = number % 10;
if (remainder == 0 || i % remainder != 0)
{
isValid = false;
}
number /= 10;
}
if (isValid)
{
resultVector.push_back(i);
}
}
return resultVector;
}
};
Something else you might like...?