[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์†Œ์ˆ˜ ์ฐพ๊ธฐ /ํŒŒ์ด์ฌ /Python /์™„์ „ํƒ์ƒ‰
Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์†Œ์ˆ˜ ์ฐพ๊ธฐ /ํŒŒ์ด์ฌ /Python /์™„์ „ํƒ์ƒ‰

728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’กsolutions )

โœ… itertools ๋ชจ๋“ˆ์—์„œ combination์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋ณด๋‹ค๋Š” dfs๋กœ ์ง์ ‘ ์กฐํ•ฉ ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค(๊ฒฝ์šฐ์˜ ์ˆ˜๋“ค์€ ์ค‘๋ณต ๋ถˆ๊ฐ€)

โœ… ์†Œ์ˆ˜๋Š” ์ˆซ์ž ๋ณธ์ธ๊ณผ 1๋กœ๋งŒ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ์ˆ˜ (1๊ณผ ๋ณธ์ธ๋งŒ ์•ฝ์ˆ˜)

โœ… ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋ณ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ 2๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ํ•ด๋‹น ์ˆซ์ž๊นŒ์ง€๋กœ ๋ฒ”์œ„ ์•ˆ์— ์žˆ๋Š” ์ˆซ์ž๋กœ ์ „๋ถ€ ๋‚˜๋ˆ„์–ด ๋ณด๊ณ , ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฉด ์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฒƒ์œผ๋กœ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆ˜๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์€ ํ•ด๋‹น ์ˆซ์ž๊ฐ€ ์†Œ์ˆ˜๋ผ๋Š” ๊ฒƒ.

โœ… ํ•จ์ˆ˜ ๊ตฌํ˜„์‹œ ์ „์—ญ๋ณ€์ˆ˜, ์ง€์—ญ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์•„์ง ํ—ท๊ฐˆ๋ฆฐ๋‹ค.

 

๐ŸŽซcode )

def solution(numbers):
    # ์•„๋ž˜๋Š” ์ฃผ์–ด์ง„ ์ˆซ์ž๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ˆซ์ž์˜ ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•˜๋Š” ๋กœ์ง(์ค‘๋ณต๋ถˆ๊ฐ€)
    def dfs(word):
        if len(word) == k: # ๋ฌธ์ž๊ธธ์ด๊ฐ€ k์ด๋ฉด ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์— ๋„ฃ๊ธฐ
            result.add(int(word))
            return

        for i in range(n):
            if visit[i] == 0:  # ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด word๋ฌธ์ž์—ด์— ๋ถ™์ด๊ธฐ
                visit[i] = 1
                dfs(word + numbers[i])
                visit[i] = 0  # ๋ฐฉ๋ฌธ ๋ฆฌ์ŠคํŠธ ๋ณต๊ตฌ

    result = set() # ์ค‘๋ณต์„ ์—†์• ๊ธฐ ์œ„ํ•ด์„œ set ์ž๋ฃŒํ˜•์œผ๋กœ ์„ค์ •
    numbers = list(numbers)
    n = len(numbers)
    visit = [0] * n
    for k in range(1, n + 1):
        dfs("")

    # ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ ์†Œ์ˆ˜ ์ฐพ๋Š” ๋กœ์ง
    answer = 0
    for i in result:
        if i == 1 or i == 0:
            continue
        for j in range(2, i):
            if i % j == 0:
                break
        else:
            answer += 1
            print(answer)
    return answer

 

๐Ÿ“Œ description )

๋ฌธ์ œ์ถœ์ฒ˜ : https://programmers.co.kr/learn/courses/30/lessons/42839?language=python3

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์†Œ์ˆ˜ ์ฐพ๊ธฐ

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

programmers.co.kr

 

๋ฌธ์ œ ์„ค๋ช…

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

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