Algorithm๐Ÿงถ | ์†Œ์ˆ˜ ์ฐพ๊ธฐ(์ˆœ์—ด ํ•จ์ˆ˜)

saneeeeeeee_Yaยท2021๋…„ 3์›” 16์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
3/11
post-thumbnail

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

๋ฌธ์ œ ์„ค๋ช…

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

๊ฐ ์ข…์ด ์กฐ๊ฐ์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ์ ํžŒ ๋ฌธ์ž์—ด 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์€ ๊ฐ™์€ ์ˆซ์ž๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ’€์ด

from itertools import permutations

def solution(numbers):
    numbers= list(numbers)
    answer = []
    for i in range(1, len(numbers)+1): 
    #for๋ฌธ์„ ์ด์šฉํ•˜์—ฌ numbers์˜ ๊ธธ์ด๊นŒ์ง€ ์ˆœ์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค
        answer += permutations(numbers, i) #append๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด X
    #answer = list(permutations(len(numbers))
    #โ˜numbers์˜ ๊ธธ์ด๋งŒํผ๋งŒ ์ˆœ์—ด์ด ๋งŒ๋“ค์–ด์ ธ ๊ณ„์† ํ…Œ์ŠคํŠธ ์‹คํŒจ
    an = []
    for i in numbers:
        an.append(int(i))
    for i in answer:
        an.append(int("".join(i))) #๋งŒ๋“ค์–ด์ง„ tuple์„ join์œผ๋กœ ๋ฌธ์ž์—ด ๊ตฌ์„ฑ
    an = set(an)
    n = []
    for i in an: #์†Œ์ˆ˜๋ฅผ ๊ฑฐ๋ฅด๋Š” ๊ณผ์ •
        b = 0
        if i == 1 or i == 0:
            b = 1
        for j in range(2, int(i** 0.5)+1):
            if i%j == 0:
                b = 1
        if b == 0:
            n.append(i)
    return len(n)

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

from itertools import permutations
def solution(n):
    a = set()
    for i in range(len(n)):
        a |= set(map(int, map("".join, permutations(list(n), i + 1))))
    a -= set(range(0, 2))
    for i in range(2, int(max(a) ** 0.5) + 1):
        a -= set(range(i * 2, max(a) + 1, i))
    return len(a)

์ˆœ์—ด(permutation)๊ณผ ์กฐํ•ฉ(combination)

itertools ๋ชจ๋“ˆ์„ ์ด์šฉํ•˜์—ฌ ์†์‰ฝ๊ฒŒ ์ˆœ์—ด๊ณผ ์กฐํ•ฉ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค

import itertools

list = ['A', 'B', 'C']
itertoos.permutation(list, r)
  • ์ˆœ์—ด : permutation, r-๊ธธ์ด ํŠœํ”Œ๋“ค, ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์ˆœ์„œ, ๋ฐ˜๋ณต๋˜๋Š” ์š”์†Œ ์—†์Œ

  • ์กฐํ•ฉ : combination, r-๊ธธ์ด ํŠœํ”Œ๋“ค, ์ •๋ ฌ๋œ ์ˆœ์„œ, ๋ฐ˜๋ณต๋˜๋Š” ์š”์†Œ ์—†์Œ

profile
๐Ÿœhttps://action2thefuture.github.io/๐Ÿœ

0๊ฐœ์˜ ๋Œ“๊ธ€