[프로그래머스 Lv.2] 소수 찾기 (완전 탐색) @

2024. 12. 12. 15:45·코딩테스트
728x90
반응형

문제

한자리 숫자가 적힌 종이 조각이 흩어져있습니다.

흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.

각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.

 

코드 

from itertools import permutations

def solution(numbers):
    answer = 0
    size = 10000000
    
    # 1. 처음부터 모든 숫자에 대해 소수 판별 후 배열에 저장
    arr = [1] * size
    arr[0] = arr[1] = 0
    
    for i in range(2,int(size**0.5)):
        if arr[i] == 1:
            for j in range(i*i,size,i):
                arr[j] = 0
                
    # 2. 길이 1, 2, 3 .. 길이의 문자열을 만들며 소수 개수 계산
    numbers = list(numbers)
    for i in range(1, len(numbers)+1):
        for p in permutations(numbers, i):
            num = int("".join(p))
            if arr[num] == 1:
                answer += 1
                arr[num] = 0
    
    return answer

 

풀이 참고

from itertools import permutations

def solution(numbers):
    answer = set()
    
    # 1. 만들 수 있는 숫자 문자열 조합을 set형 answer 변수에 저장
    for i in range(1, len(numbers)+1):
        perms = permutations(list(numbers),i)
        perms = map("".join, perms)
        answer |= set(map(int, perms))
    
    # 2. answer에서 소수가 아닌 숫자들을 삭제
    answer -= set((0, 1))
    
    for i in range(2, int(max(answer) ** 0.5) + 1):
        not_prime = range(i*i, max(answer) + 1, i)
        answer -= set(not_prime)
    
    return len(answer)

 

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

 

728x90
반응형

'코딩테스트' 카테고리의 다른 글

[프로그래머스 Lv.2] 타겟 넘버 (DFS)  (1) 2024.12.12
[프로그래머스 Lv.2] 2022 카카오 Tech 인턴쉽 - 두 큐 합 같게 만들기  (2) 2024.12.12
[프로그래머스 Lv.2] 가장 큰 수 (정렬)  (0) 2024.12.12
[프로그래머스 Lv.1] 체육복 (그리디)  (3) 2024.12.12
[프로그래머스 Lv.2] 다리를 지나는 트럭 (스택/큐)  (1) 2024.12.11
'코딩테스트' 카테고리의 다른 글
  • [프로그래머스 Lv.2] 타겟 넘버 (DFS)
  • [프로그래머스 Lv.2] 2022 카카오 Tech 인턴쉽 - 두 큐 합 같게 만들기
  • [프로그래머스 Lv.2] 가장 큰 수 (정렬)
  • [프로그래머스 Lv.1] 체육복 (그리디)
View synthesis 공부하는 대학원생
View synthesis 공부하는 대학원생
AI - view synthesis에 대해 공부하고 있으며, AI 공부하시는 분들과 함께 소통하고 싶습니다 😍
  • View synthesis 공부하는 대학원생
    Happy Support's Blog
    View synthesis 공부하는 대학원생
  • 전체
    오늘
    어제
    • 분류 전체보기 (62)
      • View synthesis (3)
      • Backbone (5)
      • Generative Models (5)
      • On-device AI (3)
      • ML (2)
      • DL (1)
      • LLM (2)
      • 코딩테스트 (25)
      • 에러 해결 모음집 (11)
      • 기타 (4)
  • 링크

  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.3
View synthesis 공부하는 대학원생
[프로그래머스 Lv.2] 소수 찾기 (완전 탐색) @
상단으로

티스토리툴바