leetcode(리트코드)-1922 Count Good Numbers(PYTHON)
leetcode(리트코드)-1922 Count Good Numbers(PYTHON)
leetcode 1922 - Count Good Numbers 문제입니다.
1. 문제
https://leetcode.com/problems/count-good-numbers/
2. Input , Output
3. 분류 및 난이도
Medium 난이도 문제입니다.
4. 문제 해석
- n이 들어옵니다.
- n의 길이를 가지는 문자열이 있다고 가정합니다.(요소는 각각 0~9의 숫자를 갖는다.)
- n의 짝수번째 인덱스에는 짝수가 와야하고, 홀수번째 인덱스에는 홀수 + 소수인 값이 와야합니다.
- 만들어질 수 있는 경우의 수를 10**9 +7 로 나눈 값을 리턴하세요.
5. code
코드설명
- 짝수번째 인덱스의 경우의 수는 5, 홀수번째 인덱스의 경우의 수는 4입니다. 5 * 4 * 5 * 4 * 5 … 를 반복하면 됩니다.
- pow()와 x**y중 후자를 선택하였는데, 시간초과가 나옵니다.
- 전자도 시간초과가 나오는데, pow(x,y,mod)를 이용하면 좀 더 효율적으로 계산이 가능합니다.
python
1
2
3
4
5
6
class Solution:
def countGoodNumbers(self, n: int) -> int:
mod = 10 ** 9 + 7
return (pow(20 , (n//2),mod) * pow(5 , (n%2),mod)) % mod
6. 결과 및 후기, 개선점
필요시 c++로 짜드립니다.
설명이 필요하다면 댓글을 달아주세요.
This post is licensed under CC BY 4.0 by the author.