programmers- lv.2 (소수 찾기)

이예송·2023년 8월 30일

PS

목록 보기
88/97

문제링크: 소수 찾기

✍🏻 Information

content
언어python
난이도⭐️⭐️
풀이시간17분
제출횟수1
인터넷검색유무yes




🍒 My Code

from itertools import permutations
def solution(numbers):
    numbers = list(numbers)
    answer = []
    for i in range(1,len(numbers)+1):
        n = list(permutations(numbers,i))  
        for num in n:
            tmp_num = int("".join(num))
            #소수인지 확인
            isPrime = True
            if tmp_num==0 or tmp_num==1:
                isPrime = False
            for j in range(2,tmp_num):
                if tmp_num%j==0:
                    isPrime=False
                    break
            #소수면 answer에 넣어줌
            if isPrime==True:
                answer.append(tmp_num)
    return len(set(answer))




💡 What I learned

  • 문자열을 한 글자씩 분리하여 리스트에 저장: list(str)
  • 문자열을 한 글자씩 분리하여 int형태로 리스트에 저장: list(map(int, str))
  • list로 되어 있는 문자열 데이터들을 설정한 구분자(separator)로 구분하여 문자열 형태로 반환: 구분자.join(list_이름). split의 반대 함수.
  • 다른 사람 풀이
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)

0개의 댓글