728x90
시간 제한 2초, 메모리 제한 128MB
# 조건
- 은민이는 4와 7을 좋아하고, 나머지 숫자는 싫어한다.
- 금민수는 어떤 수가 4와 7로만 이루어진 수를 말한다.
- A와 B가 주어졌을 때, A보다 크거나 같고, B보다 작거나 같은 자연수 중에 금민수인 것의 개수를 출력하는 프로그램을 작성하시오.
입력
- 첫째 줄에 A와 B가 주어진다.
- A는 1보다 크거나 같고, 1,000,000,000보다 작거나 같은 자연수이다.
- B는 A보다 크거나 같고, 1,000,000,000보다 작거나 같은 자연수이다.
출력
- 첫째 줄에 A보다 크거나 같고, B보다 작거나 같은 자연수 중에 금민수인 것의 개수를 출력한다.
# 접근 방법
- 최대 범위가 10억이기 때문에 하나하나 확인할 수는 없다.
- 따라서, 중복 순열을 이용하여 풀어준다.
- 4와 7만을 이용하여 중복 순열을 만들어 줄건데, 이 때 product 함수의 인자 repeat에는 a의 길이 ~ b의 길이 + 1 사이의 값을 넣어 줄 것이다.
- 즉 3 ~ 9 사이를 탐색해야 된다면 range(1, 2)를 범위로 넣어준다.
- 생성된 수가 범위 내에 존재한다면 cnt +1을 해준다.
import sys
sys.stdin = open('input.txt')
input = sys.stdin.readline
from itertools import product
a, b = map(int, input().split())
x, y = len(str(a)), len(str(b))
cnt = 0
for i in range(x, y + 1) :
pro = list(product([4, 7], repeat = i))
for li in pro :
li = int(''.join(map(str, li)))
if a <= li <= b :
cnt += 1
print(cnt)
728x90
'ALGORITHM > 정렬, 탐색,구현' 카테고리의 다른 글
[백준 9081번] 파이썬 - 단어 맞추기 (1) | 2023.12.02 |
---|---|
[백준 16935번] 파이썬 - 배열 돌리기3 (0) | 2023.12.01 |
[백준 2343번] 파이썬 - 기타 레슨 (0) | 2023.11.29 |
[백준 16973번] 파이썬 - 직사각형 탈출 (1) | 2023.11.29 |
[백준 2589번] 파이썬 - 보물섬 (2) | 2023.11.24 |