[프로그래머스 코테 연습] 소수 찾기

Gorae·2021년 6월 15일
0

알고리즘

목록 보기
12/19
post-thumbnail

문제 요약

길이가 1 이상 7 이하인 문자열 n 을 입력받아, 각 자리 숫자의 조합으로 만들 수 있는 소수가 몇 개인지 return 하라.(n 은 0~9까지 숫자만으로 이루어져 있다.)

답안 예시

# itertools 라이브러리의 permutaions 는 iterable 객체에서 r 개 데이터를 뽑아
# 일렬로 나열하는 모든 경우(순열)를 계산해준다.
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))))
    # 0과 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)

set(집합) 연산자

|: 합집합 연산자
&: 교집합 연산자
-: 차집합 연산자
^: 대칭차집합(합집합 - 교집합) 연산자
|=, &=, -=, ^=: =과 조합하여 연산과 동시에 할당한다.

a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7}
a |= b
a = {1, 2, 3, 4, 5, 6, 7} # a와 b의 합집합으로 바뀜
b = {3, 4, 5, 6, 7}

느낀점

  • 함수를 두 개로 나누지 않고 하나로 이렇게 간단하게 구현할 수 있다는 걸 배움.
  • 소수 판별법은 기본으로 외워두자!
  • set 연산자를 공부했다.
profile
좋은 개발자, 좋은 사람

0개의 댓글