ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์„ค๋ช…

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

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

์ œํ•œ์‚ฌํ•ญ

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

์ž…์ถœ๋ ฅ ์˜ˆ

numbersreturn

17 3
011 2

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

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

์˜ˆ์ œ #2
[0, 1, 1]์œผ๋กœ๋Š” ์†Œ์ˆ˜ [11, 101]๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • 11๊ณผ 011์€ ๊ฐ™์€ ์ˆซ์ž๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

 

๋‚˜์˜ ํ’€์ด

import itertools

def solution(numbers):
    primeNuberlist =[]
    perList = []

    # ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ (ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“คํ•„์š”๊ฐ€ ์—†์—ˆ๋„ค)
    strToList = list(numbers)

    # ์ˆœ์—ด ๋งŒ๋“ค๊ธฐ
    for i in range(len(strToList)):
        print(i+1)
        perList += list(itertools.permutations(strToList, i+1))

    # ์†Œ์ˆ˜์ธ์ง€ ํŒ๋ณ„ํ•˜๊ธฐ    
    for i in perList:
        temp = list(i)
        tempStr =""

        for j in range(len(temp)):
            tempStr += temp[j]

        if isPrimeNumber(int(tempStr)):
            primeNuberlist.append(int(tempStr))

    # ์ค‘๋ณต๋œ ๊ฐ’์„ ์—†์• ๊ธฐ ์œ„ํ•ด set์œผ๋กœ ๋ณ€ํ™˜ ํ›„ ๋‹ค์‹œ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•จ
    return len(list(set(primeNuberlist)))


# ์†Œ์ˆ˜์ธ์ง€ ํŒ๋ณ„ํ•˜๋Š” ํ•จ์ˆ˜
def isPrimeNumber(n):
    if n <= 1:
        return False
    i = 2
    while i < n:
        if n % i == 0:
            return False
        i += 1

    return True

๋ญ ์–ด๋–ป๊ฒŒ ํ’€๊ธดํ–ˆ๋Š”๋ฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ ์—„์ฒญ ๊ฐ„๊ฒฐํ•˜๊ณ  ์‰ฝ๊ฒŒ๋“ค ํ‘ธ์…จ๋”๋ผ. ๋‚˜๋Š” ๊ทธ๋ž˜๋„ ์ด ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ set์ด๋ž‘ permutations๋‚˜ ์•Œ๊ฒŒ๋˜์—ˆ๊ณ  ์กฐ๊ธˆ์€ ์„ฑ์žฅํ•จ....

 

 

 

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด

from itertools import permutations
def solution(n):
    a = set()
    for i in range(len(n)):
        print("์ฒ˜์Œ: {}".format(map("".join, permutations(list(n), i + 1))))
        print("int map์œผ๋กœ ๊ฐ์‹ผ๊ฑฐ: {}".format(map(int, map("".join, permutations(list(n), i + 1)))))
        print("set์œผ๋กœ ๋ฐ”๊พผ๊ฑฐ: {}".format(set(map(int, map("".join, permutations(list(n), i + 1))))))
                      
        a |= set(map(int, map("".join, permutations(list(n), i + 1))))
        print("a์ถœ๋ ฅ:{}\n".format(a))
        
    # 1์€ ์ œ์™ธ
    a -= set(range(0, 2))
    print("์ฐจ์ง‘ํ•ฉ์œผ๋กœ ๋บ€๊ฑฐ : {}".format(a))
    
    # int(max(a) ** 0.5) + 1 ์™œ ์ด๋Ÿฐ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ๊นŒ(๋ฒ”์œ„๋ฅผ ์ œ๊ณฑ๊ทผ ์‚ฌ์šฉํ•˜๋Š”์ด์œ ?)
    # ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด
    for i in range(2, int(max(a) ** 0.5) + 1):
        print("i : {}".format(i))
        # i์˜ ๋ฐฐ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ
        a -= set(range(i * 2, max(a) + 1, i))
        print("a : {}".format(a))
        
    return len(a)

n = "17"
solution(n)

๊ทธ๋ƒฅ ์ฝ”๋“œ๋ฅผ ๋ด์„œ๋Š” ๋ชจ๋ฅด๊ฒ ์–ด์„œ ์ฃ„๋‹ค ์ถœ๋ ฅํ•ด์„œ ๋ˆˆ์œผ๋กœ ํ™•์ธ์„ ํ•ด๋ดค๋‹ค.

๋ฌธ์ž์—ด์ด 17์ผ ๋•Œ

์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด

์†Œ์ˆ˜๋ž€ 1๊ณผ ์ž๊ธฐ ์ž์‹ ๋งŒ์„ ๊ฐ€์ง€๋Š” ์ •์ˆ˜๋ฅผ ๋งํ•œ๋‹ค. ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์†Œ์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. 1์€ ์†Œ์ˆ˜๋„, ํ•ฉ์„ฑ์ˆ˜๋„ ์•„๋‹Œ ๊ธฐ์ดˆ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— 1์„ ์ œ๊ฑฐํ•œ๋‹ค.
  2. 2๋Š” ์†Œ์ˆ˜์ด๋ฏ€๋กœ 2๋ฅผ ๋‹ค๋ฅธ๊ณณ์— ๊ธฐ๋กํ•ด๋‘”๋‹ค.
  3. ์ž๊ธฐ ์ž์‹  (2)๋ฅผ ์ œ์™ธํ•œ 2์˜ ๋ฐฐ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ง€์šด๋‹ค.
  4. ๋‚จ์•„์žˆ๋Š” ์ˆ˜์—์„œ 2 ๋‹ค์Œ ์ˆ˜์ธ 3๋ถ€ํ„ฐ ์ง„ํ–‰์„ ์‹œ์ž‘ํ•œ๋‹ค.
  5. 3์€ ์†Œ์ˆ˜์ด๋ฏ€๋กœ 2๋ฅผ ๊ธฐ๋กํ•œ๊ณณ์— ๊ธฐ๋กํ•œ๋‹ค.
  6. ์ž๊ธฐ ์ž์‹ (3)์„ ์ œ์™ธํ•œ 3์˜ ๋ฐฐ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ง€์šด๋‹ค.
  7. 3์˜ ๋‹ค์Œ ์ˆ˜๋Š” 4์ด์ง€๋งŒ 2์˜ ๋ฐฐ์ˆ˜๋กœ 2๋ฒˆ์—์„œ ์ง€์›Œ์กŒ์œผ๋‹ˆ ๋‚จ์•„์žˆ๋Š” ์ˆ˜ ์ค‘ 3์˜ ๋‹ค์Œ ์ˆ˜์ธ 5๋ถ€ํ„ฐ ์ง„ํ–‰์„ ์‹œ์ž‘ํ•œ๋‹ค.
  8. 5๋Š” ์†Œ์ˆ˜์ด๋ฏ€๋กœ 2์™€ 3์„ ๊ธฐ๋กํ•œ ๊ณณ์— ๊ธฐ๋กํ•œ๋‹ค.
  9. ์ž๊ธฐ ์ž์‹ ์„ ์ œ์™ธํ•œ 5์˜ ๋ฐฐ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ง€์šด๋‹ค.
  10. ์œ„ ๊ณผ์ •์„ ๋๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉด ๊ตฌํ•˜๋Š” ๊ตฌ๊ฐ„์˜ ๋ชจ๋“  ์†Œ์ˆ˜๊ฐ€ ๋‚จ๋Š”๋‹ค.

์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ๊ณต์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ์ˆซ์ž๋ฅผ ๋‹ค ๊ฒ€์‚ฌํ•  ํ•„์š”์—†์ด ๊ณ„์‚ฐ์˜ ๋ฒ”์œ„๋ฅผ ์ค„์—ฌ ๋น ๋ฅด๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ 120๊นŒ์ง€์˜ ์ˆ˜ ์ค‘ ์†Œ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹คํ•˜๋ฉด 120๊นŒ์ง€ ๊ฐˆ ํ•„์š”์—†์ด 11^2 > 120 ์ด๋ฏ€๋กœ 11๋ณด๋‹ค ์ž‘์€ ์ˆ˜์˜ ๋ฐฐ์ˆ˜๋“ค๋งŒ ์ง€์›Œ๋„ ์†Œ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‹์—์„œ ๋ฃจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€