์ฝ”ํ…Œ์ค€๋น„

<์™„์ „ํƒ์ƒ‰> ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ ˆ๋ฒจ 2. ์†Œ์ˆ˜ ์ฐพ๊ธฐ (์˜ค๋‹ต๋…ธํŠธ)

์š”๋Œœ๋‹ค 2022. 8. 13. 23:36

https://school.programmers.co.kr/learn/courses/30/lessons/42839

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

import itertools
import math
def solution(numbers):
    answer = []                                   
    nums = [n for n in numbers]                   # numbers๋ฅผ ํ•˜๋‚˜์”ฉ ์ž๋ฅธ ๊ฒƒ
    per = []           

    for i in range(1, len(numbers)+1):            # numbers์˜ ๊ฐ ์ˆซ์ž๋“ค์„ ์ˆœ์—ด๋กœ ๋ชจ๋“  ๊ฒฝ์šฐ ๋งŒ๋“ค๊ธฐ
        per += list(itertools.permutations(nums, i))        # i๊ฐœ์”ฉ ์ˆœ์—ด์กฐํ•ฉ
    
    new_nums = [int(("").join(p)) for p in per]   # ๊ฐ ์ˆœ์—ด์กฐํ•ฉ์„ ํ•˜๋‚˜์˜ intํ˜• ์ˆซ์ž๋กœ ๋ณ€ํ™˜
    new_nums = list(set(new_nums))
    cnt = 0
    print(new_nums)
    for i in new_nums:
        a = True
        if i < 2:
            continue
        for j in range(2, int(math.sqrt(i))+1):
            if i % j == 0: # ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฉด  
                a = False
                break
        if a:
            print(333)
            cnt += 1
     
    return cnt

์ฃผ์˜ํ•  ์  :

์ˆœ์—ด์„ ์“ธ ๋•Œ, 1๊ฐœ๋ถ€ํ„ฐ len(numbers)๊นŒ์ง€ ๋ชจ๋“  ์ž๋ฆฌ ์ˆ˜์˜ ์กฐํ•ฉ์„ ์ž‘์„ฑํ•ด์•ผํ•˜๋ฏ€๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด i๋งŒํผ ์ˆœ์—ด์„ ๋งŒ๋“ค์–ด์ค€๋‹ค. ์ด๋•Œ, list๋กœ ๋ฌถ์–ด์•ผ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ ์ž˜ ๋Œ์•„๊ฐ„๋‹ค.

์ˆœ์—ด์„ ๊ฐ๊ฐ ๋ฆฌ์ŠคํŠธ intํ˜•์œผ๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค์‹œ ํ†บ์•„๋ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค

์ดํ›„์— ๋‹ค์‹œ ํ’€์–ด๋ณผ ์˜ˆ์ •์ด๋‹ค.