๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป DEV/ใ„ด problems

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์™„์ „ํƒ์ƒ‰: ์†Œ์ˆ˜์ฐพ๊ธฐ

by vodkassi 2021. 7. 13.
728x90

๋ฌธ์ œ ์„ค๋ช…

 

ํ•œ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ์ ํžŒ ์ข…์ด ์กฐ๊ฐ์ด ํฉ์–ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค. ํฉ์–ด์ง„ ์ข…์ด ์กฐ๊ฐ์„ ๋ถ™์—ฌ ์†Œ์ˆ˜๋ฅผ ๋ช‡ ๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์ข…์ด ์กฐ๊ฐ์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ์ ํžŒ ๋ฌธ์ž์—ด numbers๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ข…์ด ์กฐ๊ฐ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์†Œ์ˆ˜๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 


์ œํ•œ ์‚ฌํ•ญ

  • numbers๋Š” ๊ธธ์ด 1 ์ด์ƒ 7 ์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • numbers๋Š” 0~9๊นŒ์ง€ ์ˆซ์ž๋งŒ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • "013"์€ 0, 1, 3 ์ˆซ์ž๊ฐ€ ์ ํžŒ ์ข…์ด ์กฐ๊ฐ์ด ํฉ์–ด์ ธ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.


์ž…์ถœ๋ ฅ ์˜ˆ

 

numbers return
"17" 3
"011" 2

 


์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…


์˜ˆ์ œ #1: [1, 7]์œผ๋กœ๋Š” ์†Œ์ˆ˜ [7, 17, 71]๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ #2: [0, 1, 1]์œผ๋กœ๋Š” ์†Œ์ˆ˜ [11, 101]๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 11๊ณผ 011์€ ๊ฐ™์€ ์ˆซ์ž๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

 

 

๋‚˜์˜ ์†”๋ฃจ์…˜

 

from itertools import permutations
import math

def isprime(num):
    if num < 2: return False
    max = int(math.sqrt(num)) + 1
    for i in range(2, max):
        if num%i==0: return False
    return True

def solution(numbers):
    
    prime = [int(num) for num in numbers ]
    
    i = 2
    while i <= len(numbers):
        add = [int(''.join(num)) for num in list(permutations(numbers, i))]
        prime.extend(add)
        i += 1
        
    count = 0
    for num in list(set(prime)):
        if isprime(num):
            count+=1

    return count

 

๋ฐฐ์šด ์ 

 

ํŒŒ์ด์ฌ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€๋ฉด ๊ฐ„ํŽธํ•œ ๋ชจ๋“ˆ ๋•๋ถ„์— ์‰ฝ๊ฒŒ ํ’€๋ฆฌ๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์ •์ž‘ ์ƒ๊ฐํ•˜๋Š” ํž˜์ด ๊ธธ๋Ÿฌ์ง€์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์•„ ์šฐ๋ ค๋œ๋‹ค. ๊ณผ์—ฐ ํŒŒ์ด์ฌ์œผ๋กœ ๊ณ„์† ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€์–ด๋‚˜๊ฐ€์•ผ ํ•˜๋Š”๊ฐ€ ๊ณ ๋ฏผํ•ด ๋ณด์•„์•ผ ํ•  ์‹œ์ ์ด ๋˜์—ˆ๋‹ค. 

๋Œ“๊ธ€