-
[💕 프로그래머스] 소수 찾기Algorithm/1일 1코테 2020. 12. 19. 18:22반응형
프로그래머스 2단계
🔫소수 찾기🔫
문제
programmers.co.kr/learn/courses/30/lessons/42839
내 답
- 1차시도
permutation 함수를 이용해 모든 경우의 수 저장, 1단위 숫자는 안나와서 더해줌.
l에서 하나씩 뽑아서 나머지가 0이면 count를 더해줌.
count가 1보다 크면 소수가 아니라는 뜻이므로 1인 경우에만 answer에 더해줌
import itertools def solution(numbers): l = list(map(''.join, itertools.permutations(numbers))) l2 = [numbers[i] for i in range(len(numbers))] l = l + l2 answer = set() for i in range(len(l)): count = 0 i = int(l[i]) for j in range(1, i//2+1): if i%j == 0: count += 1 if count == 1: answer.add(i) return len(answer)
시간초과로 탈락!!!
l안에 중복 숫자를 처리하지 않았고, for문으로 다 돌리는게 비효율적인듯.
- 2차시도
import itertools def solution(numbers): answer = set() for i in range(1, len(numbers)+1): t = list(map(''.join, itertools.permutations(numbers, i))) for n in t: answer.add(int(n)) t = list(answer) a = [] for i in t: count = 0 for j in range(1, i//2+1): if i%j == 0: count += 1 if count > 1: break if count == 1: a.append(i) return len(a)
set을 이용해 중복숫자를 없애줌!
그리고 break문을 이용해서 1보다 커지면 멈추게함.
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[🐉 백준 12단계] 정렬 (0) 2020.12.21 [💕 프로그래머스] 소수 만들기 (0) 2020.12.19 [💕 프로그래머스] 가장 큰 수 (0) 2020.12.18 [💕 프로그래머스] 구명보트 (0) 2020.12.16 [💕 프로그래머스] 스킬트리 (0) 2020.12.15