알고리즘

100일 동안 매일 알고리즘을 하면? - 1일차

유병각 2021. 12. 24. 17:52

100일 동안 매일 알고리즘을 하면? - 1일차

 

 

도대체 어떻게 공부해야할지 잘 감이 안잡혀서 일단 프로그래머스에 있는 고득점kit 먼저 전부 다 풀어보기로 했다. 

 

일단 오늘은 완전탐색에 있는 소수찾기 문제.

 

오늘 배운것:

1. python 순열 모듈

2. 소수판별법 2가지 

 2-1 : 1부터 n의 제곱근까지 나누어 떨어지는지 확인하는 방법

 2-2: 에라토스테네스의 채 

3. 문자열을 list 로 바꾸는 법/ 튜플 및 리스트를 문자열로 합치는 법

 

import math;
import itertools;

# 2 : 소수판별법 (제곱근까지 나누어보기)
def isPrime(n) :
    if (n < 2) : return False;
    
    for i in range(1, int(math.sqrt(n)) + 1): # squre root
        if ((n % i) == 0 and i != 1):
            return False;
    return True;

def solution(numbers):
    li = list(numbers);
    ret = [];
    for i in range(1, len(li) + 1):
        for a in itertools.permutations(li,i): # 1 python permutations 함수 
            i = ''.join(map(str, a)) # 3 : 튜플을 string 으로 합치기. map!!!
            permuNum = int(i)
            if (isPrime(permuNum)):
                ret.append(permuNum);
    
    return len(set(ret));

 

 

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