티스토리 뷰

728x90
반응형

이번 문제는 주어진 모든 경우의수를 찾고, 여기서 소수를 찾는 문제입니다.

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

 

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

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

programmers.co.kr

 

문제를 보면 1~7개 사이의숫자가 주어지고

 

해당 숫자를 가지고 만들어지는 모든 경우의수 중 소수를 찾게됩니다.

 

그렇다면 간단하게 두 파트로 나누면 됩니다.

1. 주어진 1~7개 사이의 숫자로 가능한 모든 경우의 수를 만든다.

2. 경우의수 중 소수인 값을 찾는다.

 

1번의 경우, permutation(순열)조합을 통해서 구할 수가 있습니다.

(중,고등학교때 배운 nPm 입니다)

 

개수가 1~N개까지의 모든 Permutation을 합치면 모든 경우의수를 확인할 수 있습니다.

 

소수같은 경우는 Prime Number 찾기 포스팅에서 사용한 방법을 사용했습니다.

teus-kiwiee.tistory.com/61

 

Prime Number 여부 확인(단순탐색)

소수(Prime Number)는 1이외에 어떠한 값으로도 나눠지지 않는(나머지가 없는) Number를 의미합니다. 이런 소수는 암호악에서 주로 사용되며, 매우 큰 Number가 소수인지 소수가 아니면 어떻 값과 곱해

teus-kiwiee.tistory.com

해당 문제의 Python 해답 Code입니다 :)

 

import itertools
import math

def isprime(n):
	#Number의 중간 지점까지만 소수 여부 확인    
    for i in range(2,math.ceil(n/2)+1):
    	#n을 나눠서 0이되는 값이 있을경우 소수가 아니므로
        #0을 반환
        if divmod(n,i)[1] == 0:
            return 0
    #n<=1인 경우 위 로직으로 판단이 불가하므로 예외처리
    if n<=1:
        return 0
    #소수인 경우에는 1을 반환
    return 1


#ex. numbers = "19756"
def solution(numbers):    
    #1~N개의 Permutation결과를 저장할 임시 List
    temp =[]
    #반복문을 통해서 i값에 따른 permutation 조합을 모두 구합니다.
    for i in range(1,len(numbers)+1):
        temp = temp + list((itertools.permutations(numbers, i)))
    #구해진 값들을 String -> Int 로 convert해 줍니다.
    for i in range(len(temp)):
        temp[i] = int("".join(temp[i]))
    #중복값 제거
    temp = list(set(temp))
    #isprime함수를 활용해서 소수인경우 1, 아닌경우 0을 반환해
    #temp에 소수가 몇개있는지 구합니다.
    answer = 0    
    for i in temp:
        answer = answer + isprime(i)            
    return answer
728x90
반응형

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

정수 삼각형  (0) 2021.03.20
Hash - 완주하지 못한 선수  (0) 2021.03.14
스킬트리 문제  (0) 2021.03.06
멀쩡한 사각형  (0) 2021.03.04
프린터 대기열 문제  (0) 2021.03.03
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함