개발하는 사막여우
개발하는 사막여우
개발하는 사막여우
전체 방문자
오늘
어제
  • All (310)
    • Books (13)
      • 읽기 좋은 코드가 좋은 코드다 (13)
    • Study (6)
      • Blockchain (3)
      • Algorithm (3)
    • Baekjoon (36)
    • Programmers (166)
    • LeetCode (15)
    • Open Source (1)
      • Youtube Popout Player (1)
    • Language (32)
      • Python (9)
      • JS (8)
      • Java (5)
      • HTML (6)
      • CSS (4)
    • Library & Framework (15)
      • React.js (15)
    • IDE (2)
      • IntelliJ (2)
    • Airdrop (9)
    • Tistory (2)
    • etc.. (12)
      • Cozubi (6)
      • lol-chess (0)

블로그 메뉴

  • Github

공지사항

인기 글

태그

  • 백준
  • 읽기 좋은 코드가 좋은 코드다
  • 카카오 공채
  • 알고리즘문제풀이
  • 코딩테스트연습
  • 클린 코드
  • 카카오 코딩테스트
  • 코주비
  • 파이썬
  • Java
  • 프로그래머스
  • 카카오 알고리즘 문제
  • programmers
  • Cozubi
  • 신규 코인 에어드랍
  • 2018 KAKAO BLIND RECRUITMENT
  • 프로그래머스 위클리 챌린지
  • 클린 코드 작성법
  • 코인줍줍
  • Python

최근 댓글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
개발하는 사막여우

개발하는 사막여우

[프로그래머스] 소수 찾기 (Level 2) / Python
Programmers

[프로그래머스] 소수 찾기 (Level 2) / Python

2021. 1. 19. 09:59
반응형

문제주소 :programmers.co.kr/learn/courses/30/lessons/42839

 

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

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

programmers.co.kr


<문제 설명>

더보기

문제 설명

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

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

제한사항

  • numbers는 길이 1 이상 7 이하인 문자열입니다.
  • numbers는 0~9까지 숫자만으로 이루어져 있습니다.
  • 013은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다.

입출력 예

numbers                                                              return
17 3
011 2

입출력 예 설명

예제 #1
[1, 7]으로는 소수 [7, 17, 71]를 만들 수 있습니다.

예제 #2
[0, 1, 1]으로는 소수 [11, 101]를 만들 수 있습니다.

  • 11과 011은 같은 숫자로 취급합니다.

 

<풀이법>

▒ 한줄 개념: 소수 계산▒ 
  1. numbers는 문자열이므로 각 숫자를 떼어내줍니다.
    • "17" -> ["1", "7"]
  2. 분리된 숫자들을 permutations()를 이용해 순열 조합해줍니다.
    • ["1", "7", "2"] -> ("1"), ("7"), ("1","7"), ("7", "1")
  3. 해당 숫자들을 "".join을 이용해 각각 하나의 숫자로 만들어줍니다.
    • ("1"), ("7"), ("1","7"), ("7", "1") -> [1, 7, 17, 71]
  4. 각 숫자에 대하여 소수인지 판별합니다.
    • 17은 소수인가? 17의 제곱근까지 나눠보며 어떤 수에도 나누어 떨어지지 않으면 소수!
    • 17 -> [1, 2, 3,... 17^0.5]
    • 반복문 작성시 제곱근 +1 까지로 반복해야 통과가 됩니다.

 

<코드(Python)>

from itertools import permutations

def solution(numbers):
    answer = []                                   
    nums = [n for n in numbers]                   # numbers를 하나씩 자른 것
    per = []                                      
    for i in range(1, len(numbers)+1):            # numbers의 각 숫자들을 순열로 모든 경우 만들기
        per += list(permutations(nums, i))        # i개씩 순열조합
    new_nums = [int(("").join(p)) for p in per]   # 각 순열조합을 하나의 int형 숫자로 변환

    for n in new_nums:                            # 모든 int형 숫자에 대해 소수인지 판별
        if n < 2:                                 # 2보다 작은 1,0의 경우 소수 아님
            continue
        check = True            
        for i in range(2,int(n**0.5) + 1):        # n의 제곱근 보다 작은 숫자까지만 나눗셈
            if n % i == 0:                        # 하나라도 나눠떨어진다면 소수 아님!
                check = False
                break
        if check:
            answer.append(n)                      # 소수일경우 answer 배열에 추가

    return len(set(answer))                       # set을 통해 중복 제거 후 반환

 

 

더 많은 코드 보기(GitHub) : github.com/dwkim-97/CodingTest

 

 

반응형

'Programmers' 카테고리의 다른 글

[프로그래머스] 올바른 괄호 / Python  (0) 2021.01.19
[프로그래머스] 튜플 / Python  (0) 2021.01.19
[프로그래머스] 문자열 압축 / Python  (0) 2021.01.19
[프로그래머스] 괄호 변환 / Python  (0) 2021.01.18
[프로그래머스] 조이스틱 / Python  (0) 2021.01.18
    'Programmers' 카테고리의 다른 글
    • [프로그래머스] 올바른 괄호 / Python
    • [프로그래머스] 튜플 / Python
    • [프로그래머스] 문자열 압축 / Python
    • [프로그래머스] 괄호 변환 / Python
    개발하는 사막여우
    개발하는 사막여우
    개발개발 주저리주저리

    티스토리툴바