[프로그래머스] Level2, 소수 찾기 (Python)

2021. 5. 8. 01:02·알고리즘/프로그래머스
728x90
반응형

문제

programmers.co.kr/learn/courses/30/lessons/42839

 

코딩테스트 연습 - 소수 찾기

한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이

programmers.co.kr

 

코드

from itertools import permutations
import math

def is_prime_number(n):
    if n==0 or n==1:
        return False
    else:
        for i in range(2, int(math.sqrt(n))+1):
            if n % i == 0:
                return False
        return True
    
def solution(numbers):
    answer=[]
    for i in range(1, len(numbers)+1):
        arr = list(permutations(numbers, i)) 
        for j in range(len(arr)):
            num = int(''.join(map(str,arr[j])))
            print(num)
            if is_prime_number(num):
                answer.append(num)
                
    answer=list(set(answer))
    return len(answer)
            

주어진 문자열을 가지고 숫자를 만들어 소수를 몇개 만들 수 있는지 찾는 문제이다.

 

파이썬에서 제공해주는 itertools를 이용해 순열 또는 조합을 사용해야 하는데 숫자에서 17과 71은 다른 숫자이므로 순서가 존재하는 순열을 사용해야한다.

 

그리고 소수찾기에서는 2~sqrt(n) 까지만 찾아서 나눠지지 않으면 없으면 소수이다.

 

같은 수가 나올 수 있기 때문에 마지막에 set으로 중복을 제거해준다.

ex) "011"일 경우 permutations를 돌리면 [('0', '1', '1'), ('0', '1', '1'), ('1', '0', '1'), ('1', '1', '0'), ('1', '0', '1'), ('1', '1', '0')] 이렇게 순열이 나오게 되는데 이것을 num = int(''.join(map(str,arr[j]))) 과정을 거쳐 합치게 되면 중복된 숫자가 만들어지기 때문에 마지막에 set으로 중복제거를 해줘야한다.

반응형
저작자표시 (새창열림)

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[프로그래머스] Level2, 가장 큰 수 (Python)  (0) 2021.06.03
[프로그래머스] Level2, 124 나라의 숫자 (Python)  (1) 2021.06.02
[프로그래머스] Level2, 카펫 (Python)  (0) 2021.05.06
[프로그래머스] Level3, 2 x n 타일링 (Python)  (0) 2021.05.05
[프로그래머스] Level2, 위장 (Python)  (0) 2021.05.02
'알고리즘/프로그래머스' 카테고리의 다른 글
  • [프로그래머스] Level2, 가장 큰 수 (Python)
  • [프로그래머스] Level2, 124 나라의 숫자 (Python)
  • [프로그래머스] Level2, 카펫 (Python)
  • [프로그래머스] Level3, 2 x n 타일링 (Python)
wookcode
wookcode
공부한 내용들을 정리하고 기록하는 블로그입니다.
    반응형
  • wookcode
    wookcode
    wookcode
  • 전체
    오늘
    어제
    • 카테고리 (196) N
      • study (0)
        • 아파치 카프카 애플리케이션 프로그래밍 with 자.. (0)
      • Live Study (15)
      • Programming (14)
        • Java (8)
        • Python (1)
        • Springboot (5)
        • MSA (0)
      • 알고리즘 (117)
        • 백준 (58)
        • 프로그래머스 (59)
      • 에러로그 (5)
      • 항해99 (23)
      • 면접 (1)
      • 프로젝트 (1)
      • CS (20) N
        • 네트워크 (2)
        • 운영체제 (2)
        • 데이터베이스 (2)
        • 컴퓨터구조 (1)
        • Java (8)
        • Spring (5) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    조합
    orm
    spring
    SpringBoot
    java
    파이썬
    에러
    괄호
    카카오코딩테스트
    항해마켓
    jpa
    알고리즘
    후기
    정리
    카카오인턴
    실전프로젝트
    항해99
    SFlash
    회고
    김영한
    인프런
    프로그래머스
    스파르타코딩클럽
    코딩테스트
    브루트포스
    그리디
    해결
    백준
    미니프로젝트
    버그
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[프로그래머스] Level2, 소수 찾기 (Python)
상단으로

티스토리툴바