Leetcode Java Smallest Integer Divisible by K
업데이트:
문제
코드
class Solution {
public int smallestRepunitDivByK(int k) {
if (k % 2 == 0 || k % 5 == 0) {
return -1;
}
int result = 0;
for (int i = 1; i <= k; i++) {
result = ((result * 10) + 1) % k;
if (result == 0) {
return i;
}
}
return -1;
}
}
결과
설명
- 1로만 이루어진 임의 정수 중 k로 나눌 수 가장 작은 양의 정수를 구하는 문제이다.
- 단, 해당 정수가 존재하지 않으면, -1을 주어진 문제의 결과로 반환한다.
-
k가 2와 5의 약수인 경우 뒷 자리가 1로 끝날 수 없으므로, -1을 주어진 문제의 결과로 반환한다.
-
값을 저장할 result를 0으로 초기화한다.
- 1부터 k 이하까지 i를 증가시키며 아래를 수행한다.
- result에 $(result \times 10) + 1$을 수행한 결과를 overflow를 방지하기 위해 k로 나눈 나머지를 넣어준다.
- result가 0이면 나눌 수 있는 값이 존재한다는 의미이므로, 글자 자릿수인 i를 주어진 문제의 결과로 반환한다.
- 반복이 완료되면 조건에 만족하는 양의 정수가 없으므로, -1을 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기