본문 바로가기
코딩테스트 파이썬/백준

금민수의 개수 ( 1527 번 )

by 세용용용용 2025. 8. 20.

1527번: 금민수의 개수

 


🧠 알고리즘

  • 브루트포스(Brute Force) + 순열 생성 (itertools.product)

 

✔️ 동작 방식

  • 구간 [a, b]의 경계값 a, b의 자릿수를 구한다. (len_a, len_b)
  • 해당 자릿수의 모든 러키 넘버 후보를 생성한다
  • 생성된 숫자를 정수로 변환한 뒤, 구간 [a, b]에 속하면 answer를 +1 증가시킨다.

 

🧾 코드

import sys
from itertools import product

def _main(a, b):
    answer = 0
    len_a = len(str(a))
    len_b = len(str(b))

    for repeat_num in range(len_a, len_b + 1):
        for pd in product(['4', '7'], repeat = repeat_num):
            now_pd = int(''.join(pd))
            if (now_pd >= a) and (now_pd <= b):
                answer += 1

    return answer


a, b = map(int, sys.stdin.readline().rstrip().split())
print(_main(a, b))

 

⏱️ 시간 복잡도

for pd in product(['4', '7'], repeat = repeat_num) : 중복 순열, 자릿 수 만큼 조합 출력 ( 지수형 시간 복잡도 )

해당 알고리즘 시간 복잡도 : 지수형 시간 복잡도 ( O(2 ** n) )

'코딩테스트 파이썬 > 백준' 카테고리의 다른 글

돌리기 ( 1682 번 )  (2) 2025.08.24
성준이와 초콜릿 ( 1674 번 )  (0) 2025.08.21
문자열 교환 ( 1522 번 )  (0) 2025.08.20
기타콘서트 ( 1497 번 )  (0) 2025.08.19
기타리스트 ( 1495 번 )  (1) 2025.08.18