๋ฐฑ์ค€ 1527 ๊ธˆ๋ฏผ์ˆ˜์˜ ๊ฐœ์ˆ˜ ํŒŒ์ด์ฌ

2022. 12. 30. 23:02ใ†๐Ÿ”ฑ Algorithm/Else

https://www.acmicpc.net/problem/1527

 

1527๋ฒˆ: ๊ธˆ๋ฏผ์ˆ˜์˜ ๊ฐœ์ˆ˜

์ฒซ์งธ ์ค„์— A์™€ B๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. A๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 1,000,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. B๋Š” A๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 1,000,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

www.acmicpc.net

 

๋ธŒ๋ฃจํŠธ ํฌ์Šค ๋ƒ„์ƒˆ๊ฐ€ ์‚ด์‚ด ๋‚˜๊ธธ๋ž˜ permutation ์œผ๋กœ ์ฒจ์—” ์ ‘๊ทผํ–ˆ๋‹ค.

์–ด์ผ€ ์ ‘๊ทผํ–ˆ๋ƒ๋ฉด, ์ž…๋ ฅ๋œ ์ˆ˜์˜ ๊ธธ์ด ๋งŒํฐ [4] ์™€ [7] ๋ฐฐ์—ด์„ ๋Š˜๋ฆผ. 

๋Š˜๋ฆฐ [4] , [7] ๋ฐฐ์—ด์„ ํ•ฉ์นจ. -> [4] * len(์ธํ’‹๊ฐ’) + [7] * len(์ธํ’‹๊ฐ’) 

ํ•ฉ์ณ์ง„ ๋ฐฐ์—ด์„ permutations ์— ๋„ฃ๊ณ  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•จ. ๋‹น์—ฐํžˆ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋‚จ...

 

๋ถˆํ•„์š”ํ•˜๊ฒŒ 4 ์™€ 7 ๋ฐฐ์—ด์„ ๋Š˜๋ ค๋†“์€๊ฒŒ ์‹œ๊ฐ„์ดˆ๊ณผ์˜ ์›์ธ์ด์—ˆ๋‹ค. 

์ด๋Ÿด ๋• product ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž (๋‹ค๋ฅธ ๋ถ„ ๋‹ต ์ฐธ๊ณ ํ•จ ๐Ÿฅน)

product ์˜ repeat ์†์„ฑ์„ ์ด์šฉํ•˜๋ฉด ์ž…๋ ฅ๊ฐ’์˜ ๊ธธ์ด๋งŒํผ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ๊ณ , ์‹œ๊ฐ„์ดˆ๊ณผ๋„ ๋‚˜์ง€ ์•Š๋Š”๋‹ค.

๊ทธ ํ›„์—” ๊ธฐ์กด์— ์ง  ๋กœ์ง์ด๋ž‘ ๋น„์Šทํ•ด์„œ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

from itertools import product

a, b = map(int, input().split())
a_len = len(str(a))
b_len = len(str(b))
count = 0
for i in range(a_len, b_len + 1):
    for n in product([4, 7], repeat=i):
        join = ''.join(list(map(str, n)))
        if a <= int(join) <= b:
            count += 1
print(count)