[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์†Œ์ˆ˜ ์ฐพ๊ธฐ/Python - Lv.2

2024. 10. 25. 10:05ยทCoding Test/Algorithms

โ“๋ฌธ์ œ

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

 

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

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

์„ฑ๋Šฅ ์š”์•ฝ

์ฝ”๋“œ 1 โžก๏ธ ๋ฉ”๋ชจ๋ฆฌ: 280 MB, ์‹œ๊ฐ„: 860.28 ms

์ฝ”๋“œ 2 โžก๏ธ ๋ฉ”๋ชจ๋ฆฌ: 10.4 MB, ์‹œ๊ฐ„: 2639.75 ms

๋ฌธ์ œ ์„ค๋ช…

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

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

์ œํ•œ์‚ฌํ•ญ

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

์ž…์ถœ๋ ฅ ์˜ˆ

numbers return
"17" 3
"011" 2

โœ๐Ÿปํ’€์ด

์ฝ”๋“œ1 ํ’€์ด
permutations๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ€๋Šฅํ•œ ์ˆซ์ž์˜ ์กฐํ•ฉ์„ ์ฐพ๋Š”๋‹ค.
0๊ณผ 1์„ ์ง‘ํ•ฉ์—์„œ ์ œ๊ฑฐํ•œ๋‹ค.
์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

์ฝ”๋“œ2 ํ’€์ด
๊ฐ€๋Šฅํ•œ ์ˆซ์ž์˜ ์กฐํ•ฉ์„ ๋ชจ๋‘ ์ฐพ๋Š”๋‹ค.
ํ˜„์žฌ ์ˆซ์ž๊ฐ€ ์†Œ์ˆ˜๋ผ๋ฉด ์ง‘ํ•ฉ์— ๋„ฃ๋Š”๋‹ค.

๐Ÿ’ป์ฝ”๋“œ

# permutations๋ฅผ ์‚ฌ์šฉํ•œ ํ’€์ด
from itertools import permutations

def solution(numbers):
    nums = set()
    for i in range(len(numbers)): # ๊ฐ€๋Šฅํ•œ ์ˆซ์ž ์กฐํ•ฉ ์ฐพ๊ธฐ
        nums |= set(map(int, map("".join, permutations(list(numbers), i + 1))))
    nums -= set(range(0, 2)) # 0๊ณผ 1์„ ์ œ๊ฑฐ
    for i in range(2, int(max(nums) ** 0.5) + 1): # ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด
        nums -= set(range(i * 2, max(nums)+ 1, i)) # i์˜ ๋ฐฐ์ˆ˜๋ฅผ ์ œ๊ฑฐ

    return len(nums)
# ๋ฐฑํŠธ๋ž˜ํ‚น ๊ฐ™์ง€ ์•Š์€ ๋ฐฑํŠธ๋ž˜ํ‚น ํ’€์ด
nums = set()

def isprime(num):
    if num == 0 or num == 1:
        return False
    i = 2
    for i in range(2, num):
        if num % i == 0:
            return False

    return True

def backtracking(length, numbers, visit, num):
    if len(num) == length:
        if isprime(int(num)):
            nums.add(int(num))
        return

    for i in range(len(numbers)):
        if not visit[i]:
            visit[i] = True
            backtracking(length, numbers, visit, num + numbers[i])
            visit[i] = False

def solution(numbers):
    visit = [False] * len(numbers)

    for i in range(1, len(numbers) + 1):
        for j in range(len(numbers)):
            if not visit[j]:
                visit[j] = True
                backtracking(i, numbers, visit, numbers[j])
                visit[j] = False

    return len(nums)

๐Ÿ’ก์ƒˆ๋กœ ๋ฐฐ์šด ๋‚ด์šฉ

|= ์—ฐ์‚ฐ์ž

  • '|'๋Š” or์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ ์ฆ‰, union์„ ๋œปํ•œ๋‹ค.
  • '|='์€ ํ˜„์žฌ ์ง‘ํ•ฉ์— ์ƒˆ๋กœ์šด ์›์†Œ๋ฅผ ๋„ฃ๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

์ˆซ์ž ** 0.5 โžก๏ธ ์ œ๊ณฑ๊ทผ ํ‘œํ˜„

permutations ์ˆœ์—ดํ•จ์ˆ˜

  • permutations(๋ฆฌ์ŠคํŠธ, ์„ ํƒํ•  ์›์†Œ ์ˆ˜)

combinations ์กฐํ•ฉํ•จ์ˆ˜

  • combinations(๋ฆฌ์ŠคํŠธ, ์„ ํƒํ•  ์›์†Œ ์ˆ˜)

permutations, combinationsํ•จ์ˆ˜ ์‚ฌ์šฉ ์‹œ itertools๋กœ๋ถ€ํ„ฐ importํ•ด์„œ ์‚ฌ์šฉ.

๐Ÿ“ํ›„๊ธฐ

์ „์— c++๋กœ ํ’€์—ˆ์„ ๋•Œ permutatio ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ c++๋กœ ํ’€ ๋•Œ permutation์“ฐ๋ฉด ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ๋„ˆ๋ฌด ๊ฒช์—ˆ๋”๋‹ˆ permutations๋ฅผ ์“ธ ์ƒ๊ฐ์„ ๋ชป ํ–ˆ๋‹ค..

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Coding Test > Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์†Œํ”„ํ‹ฐ์–ด] ์ง•๊ฒ€๋‹ค๋ฆฌ/Python - Lv.3  (0) 2024.10.30
[์†Œํ”„ํ‹ฐ์–ด] ์žฅ์• ๋ฌผ ์ธ์‹ ํ”„๋กœ๊ทธ๋žจ/Python - Lv.2  (0) 2024.10.29
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [3์ฐจ] ์••์ถ•/Python - Lv.2  (3) 2024.10.24
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํƒ๋ฐฐ์ƒ์ž/Java - Lv.2  (0) 2024.10.24
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ• ์ธํ–‰์‚ฌ/Java - Lv.2  (0) 2024.10.21
'Coding Test/Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์†Œํ”„ํ‹ฐ์–ด] ์ง•๊ฒ€๋‹ค๋ฆฌ/Python - Lv.3
  • [์†Œํ”„ํ‹ฐ์–ด] ์žฅ์• ๋ฌผ ์ธ์‹ ํ”„๋กœ๊ทธ๋žจ/Python - Lv.2
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [3์ฐจ] ์••์ถ•/Python - Lv.2
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํƒ๋ฐฐ์ƒ์ž/Java - Lv.2
The Engineer, Lucy
The Engineer, Lucy
  • The Engineer, Lucy
    Growing up for My Future๐Ÿ’•
    The Engineer, Lucy
    • Instagram
    • GitHub
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (165) N
      • Computer Science (17)
        • Data Structure (0)
        • Algorithms (1)
        • Operating System (3)
        • Network (11)
        • Database System (2)
      • Coding Test (81) N
        • Algorithms (73) N
        • SQL (7)
      • Infra (8)
      • Cloud (22)
        • AWS (2)
        • GCP (3)
        • Docker (4)
        • Kubernetes (13)
      • Linux (26)
      • NGINX (1)
      • CICD (3)
      • IaC (2)
      • ETC (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๊ณต์ง€์‚ฌํ•ญ

  • ๋งํฌ

    • Lucy's Instagram
    • Lucy's GitHub
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    docker
    ์…ธ ์Šคํฌ๋ฆฝํŠธ
    network
    bfs
    ์˜ค๋ธ”์™„
    ๋„คํŠธ์›Œํฌ
    ๋„์ปค
    cs ๊ธฐ์ดˆ ์ง€์‹ ์ •๋ฆฌ
    Shell Script
    ๋„คํŠธ์›Œํฌ ๊ธฐ์ดˆ ์ง€์‹
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ
    Shell
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ณต๋ถ€
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 2๊ธ‰
    programmers
    ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค
    ๋ฆฌ๋ˆ…์Šค
    ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
    Kubernetes
    ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ๋ฐฑ์ค€
    Linux
    ์ž๋ฐ”
    dfs
    Java
    ์‰˜ ์Šคํฌ๋ฆฝํŠธ
    Baekjoon
    ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰
    K8s
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
The Engineer, Lucy
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์†Œ์ˆ˜ ์ฐพ๊ธฐ/Python - Lv.2
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”