728x90
반응형
https://www.acmicpc.net/problem/1527
문제
은민이는 4와 7을 좋아하고, 나머지 숫자는 싫어한다. 금민수는 어떤 수가 4와 7로만 이루어진 수를 말한다.
A와 B가 주어졌을 때, A보다 크거나 같고, B보다 작거나 같은 자연수 중에 금민수인 것의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B가 주어진다. A는 1보다 크거나 같고, 1,000,000,000보다 작거나 같은 자연수이다. B는 A보다 크거나 같고, 1,000,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 A보다 크거나 같고, B보다 작거나 같은 자연수 중에 금민수인 것의 개수를 출력한다.
풀이
Code
import sys
from itertools import product
input = sys.stdin.readline
def solution(a, b) :
# 1. 결과 변수 생성
ans = 0
# 2.
for i in range(len(str(a)), len(str(b)) + 1) :
# 2-1. 길이가 a 혹은 b의 길이와 같을 경우
if i in [len(str(a)), len(str(b))] :
for num in product([4, 7], repeat = i) :
# 생성한 수가 범위 안에 들 경우 카운팅
num = int(''.join(map(str, num)))
if a <= num <= b : ans += 1
# 2-2. 이외의 경우
else :
ans += 2**i
# 3. 결과 출력
print(ans)
if __name__ == '__main__' :
a, b = map(int, input().split())
solution(a, b)
728x90
반응형
'Coding Test > Baekjoon' 카테고리의 다른 글
[Python/BOJ] 24391. 귀찮은 해강이 (1) | 2023.10.06 |
---|---|
[Python/BOJ] 23083. 꿀벌 승연이 (1) | 2023.10.06 |
[Python/BOJ] 1189. 컴백홈 (0) | 2023.10.04 |
[Python/BOJ] 11725. 트리의 부모 찾기 (0) | 2023.09.29 |
[Python/BOJ] 14653. 너의 이름은 (0) | 2023.09.28 |