Count Good Numbers - Leetcode 1922 - Python
- 문제는 문자열을 만들 때 짝수 위치에는 짝수 숫자, 홀수 위치에는 소수만 올 수 있다는 제약 조건 하에 길이가 n인 "좋은 숫자"의 개수를 세는 것이다. 🔢
- 결과가 매우 커질 수 있으므로 큰 소수로 모듈러 연산을 수행해야 한다. ➗
- 단순한 선형 시간 솔루션은 시간 초과될 수 있으므로, 지수 연산을 더 효율적으로 수행해야 한다. ⏱️
- 지수 연산을 효율적으로 수행하기 위해 "제곱을 이용한 지수 연산" 알고리즘을 사용한다. 이는 문제를 log n 시간으로 줄인다. ➮
- 기본 아이디어는 지수를 반으로 나누고, 밑을 제곱하여 문제를 더 작은 하위 문제로 분해하는 것이다. ➗2
- 지수가 홀수일 경우, 밑을 결과에 곱하고 지수를 1 감소시킨다. ➕
- 이 알고리즘은 반복적으로 구현할 수 있으며, 각 단계에서 결과를 모듈러 연산하여 오버플로를 방지한다. ♾️
- 짝수 위치의 개수와 홀수 위치의 개수를 계산하고, 각각 5와 4를 해당 횟수만큼 제곱한 다음 결과를 곱한다. ✖️
- 파이썬에서 천장 함수를 사용하여 짝수 위치의 개수를 정확하게 계산해야 한다. ⬆️
- 최종 결과를 큰 소수로 모듈러 연산하여 문제의 요구 사항을 충족한다. ✅