The k-beauty of an integer num is defined as the number of substrings of num when it is read as a string that meet the following conditions:
It has a length of k.
It is a divisor of num.
Given integers num and k, return the k-beauty of num.
Note:
Leading zeros are allowed.
0 is not a divisor of any value.
A substring is a contiguous sequence of characters in a string.
k자릿수만큼 순차적으로 잘라서 num의 약수가 될 수 있는지 확인하는 문제이다.
Input: num = 240, k = 2
Output: 2
Explanation: The following are the substrings of num of length k:
- "24" from "240": 24 is a divisor of 240.
- "40" from "240": 40 is a divisor of 240.
Therefore, the k-beauty is 2.
Input: num = 430043, k = 2
Output: 2
Explanation: The following are the substrings of num of length k:
- "43" from "430043": 43 is a divisor of 430043.
- "30" from "430043": 30 is not a divisor of 430043.
- "00" from "430043": 0 is not a divisor of 430043.
- "04" from "430043": 4 is not a divisor of 430043.
- "43" from "430043": 43 is a divisor of 430043.
Therefore, the k-beauty is 2.
제한 사항
- 1 num
- 1 k num.length (taking num as a string)
class Solution:
def divisorSubstrings(self, num: int, k: int) -> int:
strN = str(num) #스트링으로 변환
answer = 0
for i in range(len(strN)-k+1):
N = int(strN[i:i+k])
if N != 0 and num%N==0:
answer += 1
return answer
def divisorSubstrings(self, num: int, k: int) -> int:
l = 0
r = k
num = str(num)
count = 0
while r <= len(num):
n = int(num[l: r])
# handle case where n could be '0'.
if not n:
l += 1
r += 1
continue
if int(num) % n == 0:
count += 1
# slide window
l += 1
r += 1
return count
저랑 완전히 똑같이 푼사람들도 있었습니다.
파이썬에 적응하기 시작했나봐요 😃