데브허브 | DEVHUB | Smallest Integer Divisible by K - Leetcode 1015 - PythonSmallest Integer Divisible by K - Leetcode 1015 - Python
- 주어진 양의 정수 K로 나누어지는, '1'로만 구성된 가장 작은 양의 정수 N의 길이를 찾는 문제. 🔢
- 숫자가 매우 커져 오버플로우가 발생할 수 있으므로, 각 단계에서 K로 모듈로 연산(
% K)을 적용하여 숫자를 관리한다. 📏
- 해답이 존재하지 않을 경우, 나머지 값들이 반복되는 사이클이 발생한다. 이 사이클을 감지하여 무한 루프를 방지한다. 🔄
- K가 짝수(2의 배수)인 경우, '1'로만 구성된 숫자는 항상 홀수이므로 K로 나누어질 수 없어 해답이 존재하지 않는다. 🚫
- 다음 나머지 값은 이전 나머지 값에
(이전_나머지 * 10 + 1) % K 공식을 적용하여 계산한다. 이는 전체 숫자를 구성할 필요 없이 효율적인 계산을 가능하게 한다. ✨
- 나머지 값은 항상
0에서 K-1 사이의 값을 가지므로, 최대 K번의 시도 내에 사이클 감지 또는 해답 발견이 가능하다. 🎯
- 공간 복잡도를 최적화하기 위해, 이전에 본 나머지 값을 저장하는 해시셋 대신 루프를
K번으로 제한할 수 있다. K번의 반복 내에 나머지가 0이 되지 않으면 해답이 없음을 의미한다. 🧠