새벽_나그네
12시 지난 새벽
새벽_나그네
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • DevLog
    • Algorithm
    • ComputerScience
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • docker
  • 프로그래머스
  • 내일배움캠프
  • 내일배움카드
  • Selenium 4
  • 내일배움단
  • 코딩
  • TodayILearned
  • 개발일지
  • 스파르타코딩클럽
  • 자기주도학습
  • Python
  • 국비지원
  • 코딩프로젝트
  • machine learning
  • portfolio
  • AI트랙
  • 코린이
  • Github
  • til

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
새벽_나그네

12시 지난 새벽

Algorithm

[프로그래머스] 코딩테스트 연습Summer/Winter Coding(~2018) 소수 만들기

2022. 8. 6. 23:32

문제

문제 설명

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

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

 

입력 & 출력

입출력 예

numsresult

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

 

풀이 과정

itertools 중 permetations과 combinations 중 앞뒤 숫자가 순서가 바뀌더라도 더한 값은 같기 때문에 combinations를 사용했다.

1. 배열에서 3개의 숫자를 뽑아서 조합을 만들어야 하기때문에 combinations함수를 사용하여 3개의 숫자를 뽑아낸다.

2. 뽑아낸 숫자를 sum함수를 이용하여 모두 더해서 s 변수에 저장한다.

3. 저장한 s값이 소수인지 판별한다. 판별방법은 에라토스테네스의 체 원리에 따라서 판별하도록 하며 이렇게 하였을 때 소수가 되면 1씩 answer에 더해주고 이를 리턴하여준다.

 

코드

from itertools import combinations

def solution(nums):
    answer = 0
    for i in combinations(nums, 3):
        s = sum(i)
        chk = True
        for j in range(2, int(s ** 0.5) + 1):
            if s % j == 0:
                chk = False
                break
        if chk is True:
            answer += 1
    return answer
저작자표시 비영리 변경금지 (새창열림)

'Algorithm' 카테고리의 다른 글

[프로그래머스] 코딩테스트 연습완전탐색 최소직사각형  (0) 2022.08.08
[프로그래머스] 코딩테스트 연습월간 코드 챌린지 시즌1 3진법 뒤집기  (0) 2022.08.07
8-5[코딩테스트] 알고리즘 연습  (0) 2022.08.05
[프로그래머스] 코딩테스트 연습2017 팁스타운 예상 대진표  (0) 2022.08.05
[프로그래머스]코딩테스트 연습완전탐색 소수 찾기  (0) 2022.08.05
    'Algorithm' 카테고리의 다른 글
    • [프로그래머스] 코딩테스트 연습완전탐색 최소직사각형
    • [프로그래머스] 코딩테스트 연습월간 코드 챌린지 시즌1 3진법 뒤집기
    • 8-5[코딩테스트] 알고리즘 연습
    • [프로그래머스] 코딩테스트 연습2017 팁스타운 예상 대진표
    새벽_나그네
    새벽_나그네
    IT, 프로그래밍, 정보, 스마트스토어

    티스토리툴바