개발하는 사막여우
개발하는 사막여우
개발하는 사막여우
전체 방문자
오늘
어제
  • 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
  • 코딩테스트연습
  • Python
  • 알고리즘문제풀이
  • 코주비
  • 백준
  • 프로그래머스
  • 카카오 알고리즘 문제
  • 클린 코드 작성법
  • 카카오 코딩테스트
  • Cozubi
  • 클린 코드
  • 파이썬
  • 읽기 좋은 코드가 좋은 코드다
  • 2018 KAKAO BLIND RECRUITMENT
  • 프로그래머스 위클리 챌린지
  • 코인줍줍
  • 신규 코인 에어드랍
  • programmers

최근 댓글

최근 글

티스토리

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

개발하는 사막여우

[프로그래머스] 소수 만들기 / Python
Programmers

[프로그래머스] 소수 만들기 / Python

2021. 1. 22. 11:58
반응형

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

 

코딩테스트 연습 - 소수 만들기

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때

programmers.co.kr


<문제 설명>

더보기

문제 설명

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.

제한사항

  • nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
  • nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.

입출력 예

nums                                                                   result
[1,2,3,4] 1
[1,2,7,6,4] 4

입출력 예 설명

입출력 예 #1
[1,2,4]를 이용해서 7을 만들 수 있습니다.

입출력 예 #2
[1,2,4]를 이용해서 7을 만들 수 있습니다.
[1,4,6]을 이용해서 11을 만들 수 있습니다.
[2,4,7]을 이용해서 13을 만들 수 있습니다.
[4,6,7]을 이용해서 17을 만들 수 있습니다.

 

<풀이법>

▒ 한줄 개념: 에라토스테네스의 체 ▒ 
  1. itertools 패키지의 combinations 모듈을 이용해 nums에서 3개 수를 뽑아 조합한 결과를 얻어냄(combi)
  2. combi 의 원소 중 최대값까지 모든 수에 대해 소수인지 체크할 check 배열 만들어냄
  3. check배열을 이용해 에라토스테네스의 체 알고리즘을 사용하여 범위내 모든 소수 찾아냄
  4. combi 의 원소들에 대해 check배열을 참조하여 소수일경우 answer += 1
  5. answer 반환

 

 

<코드(Python)>

from itertools import combinations
def solution(nums):
    answer = 0
    combi = [sum(c) for c in sorted(combinations(nums, 3))]
    check = [False, False] + [True for i in range(max(combi)-1)]
    for i in range(2, len(check)):
        if check[i]:
            for n in range(2, int((len(check)-1)/i+1)):
                check[n*i] = False

    for c in combi:
        if check[c]:
            answer += 1

    return answer

 

 

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

 

 

반응형

'Programmers' 카테고리의 다른 글

[프로그래머스] [3차] 방금그곡 / Python  (0) 2021.01.23
[프로그래머스] 점프와 순간 이동 / Python  (0) 2021.01.22
[프로그래머스] N개의 최소공배수 / Python  (0) 2021.01.22
[프로그래머스] 짝지어 제거하기 / Python  (0) 2021.01.21
[프로그래머스] 폰켓몬 / Python  (0) 2021.01.21
    'Programmers' 카테고리의 다른 글
    • [프로그래머스] [3차] 방금그곡 / Python
    • [프로그래머스] 점프와 순간 이동 / Python
    • [프로그래머스] N개의 최소공배수 / Python
    • [프로그래머스] 짝지어 제거하기 / Python
    개발하는 사막여우
    개발하는 사막여우
    개발개발 주저리주저리

    티스토리툴바