[1일 3알고] (완전탐색,) 소수

2400·2022년 4월 2일
0
post-thumbnail

소수

  1. 가능한 경우의 수 생성 ( 순열 )
  2. 정렬 후, 소수체크
  3. 이때 예외케이스들 ( 0,1,2 ) 처리해줌.
  4. 만약 소수체크 로직에서 시간이 너무 오래걸린다면 해쉬맵을 만들어서 시간을 단축시킬 필요가 있음
import itertools

def solution(numbers):
    # numbers = '1231'
    # 가능한 경우의 수 생성 ---------------------------------------
    temp_list = []
    for i in range(len(numbers)):
        temp_list.append(numbers[i])
    
    pos_cases = []
    for i in range(len(numbers)):
        temp_cases = list(map(int,map(''.join, itertools.permutations(temp_list, i+1))))
        pos_cases.extend(temp_cases)
    
    pos_cases = set(pos_cases)
    pos_cases = list(pos_cases)
    pos_cases.sort()
    print(pos_cases)
    # 소수 체크 ------------------------------------------------------------

    prime_cases = []
    for pos_case in pos_cases:

        if pos_case ==0 or pos_case ==1:
            pass
        
        if pos_case ==2:
            prime_cases.append(pos_case)
        
        flag = 0
        for i in range(2, pos_case+1): # 1, 자기자신은 제외
            if pos_case%i ==0 :
                break # 이미 소수가 아니므로 중단
            else:
                flag += 1
                if flag == pos_case-2:
                    # print(i,'pos_case :',pos_case, '| flag :',flag)
                    prime_cases.append(pos_case)
                
                
            
        
    print(prime_cases)    
    return len(prime_cases)

profile
공부용 혹은 정리용 혹은 개인저장용

0개의 댓글

관련 채용 정보