๋ฌธ์ ์ค๋ช
ํ์๋ฆฌ ์ซ์๊ฐ ์ ํ ์ข ์ด ์กฐ๊ฐ์ด ํฉ์ด์ ธ์์ต๋๋ค. ํฉ์ด์ง ์ข ์ด ์กฐ๊ฐ์ ๋ถ์ฌ ์์๋ฅผ ๋ช ๊ฐ ๋ง๋ค ์ ์๋์ง ์์๋ด๋ ค ํฉ๋๋ค.
๊ฐ ์ข ์ด ์กฐ๊ฐ์ ์ ํ ์ซ์๊ฐ ์ ํ ๋ฌธ์์ด numbers๊ฐ ์ฃผ์ด์ก์ ๋, ์ข ์ด ์กฐ๊ฐ์ผ๋ก ๋ง๋ค ์ ์๋ ์์๊ฐ ๋ช ๊ฐ์ธ์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- numbers๋ ๊ธธ์ด 1 ์ด์ 7 ์ดํ์ธ ๋ฌธ์์ด์ ๋๋ค.
- numbers๋ 0~9๊น์ง ์ซ์๋ง์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- "013"์ 0, 1, 3 ์ซ์๊ฐ ์ ํ ์ข ์ด ์กฐ๊ฐ์ด ํฉ์ด์ ธ์๋ค๋ ์๋ฏธ์ ๋๋ค.
์ ์ถ๋ ฅ ์
์์ #1
[1, 7]์ผ๋ก๋ ์์ [7, 17, 71]๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์์ #2
[0, 1, 1]์ผ๋ก๋ ์์ [11, 101]๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
- 11๊ณผ 011์ ๊ฐ์ ์ซ์๋ก ์ทจ๊ธํฉ๋๋ค.
ํ์ด ์ฝ๋
from itertools import permutations
def is_prime(num):
if num == 0 or num == 1:
return 0
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return 0
return 1
def solution(numbers):
answer = 0
check = [0 for _ in range(10_000_000)]
for i in range(1, 8):
for per in permutations(numbers, i):
num = int(''.join(per))
if not check[num]:
answer += is_prime(num)
check[num] = 1
return answer
์์ ํ์ (๋ธ๋ฃจํธ ํฌ์ค)๋ฅผ ํ์ฉํด ํ์๋ค.
๋ฌธ์ ์ ์กฐ๊ฑด์์ ์ซ์์ ๊ธธ์ด๋ ์ต๋ 7, ๋์ฌ ์ ์๋ ์ซ์๋ 0~9์ด๋ฏ๋ก, ๋ชจ๋ ๊ฒฝ์ฐ์ ๋ํด ๋ค ๋ฐ์ ธ๋ณด์๋ ๊ด์ฐฎ๋ค๊ณ ํ๋จํ๋ค.
itertools์์ ์ ๊ณตํ๋ ์์ด ํจ์์ธ permutations๋ฅผ ํ์ฉํด ๊ตฌํํ๊ณ , is_prime์ด๋ผ๋ ํจ์๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด
๋ชจ๋ ๊ฒฝ์ฐ์ ๋ํด ์์ ํ๋ณ์ ์งํํ๋ค.
'๐ ์ฝ๋ฉํ ์คํธ ๋๋น : PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฟผ๋์์ถ ํ ๊ฐ์ ์ธ๊ธฐ (level2, python) (1) | 2022.09.23 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์ซ์ ๊ฒ์ (level3, python) (1) | 2022.09.20 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฒ ์คํธ์จ๋ฒ (level3, python) (0) | 2022.09.20 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ฐ์ฅ ํฐ ์ (level2, python) (1) | 2022.09.19 |
[ํ๋ก๊ทธ๋๋จธ์ค] 2xn ํ์ผ๋ง (level2, python) (0) | 2022.09.19 |