-
[💕 프로그래머스] 소수 만들기Algorithm/1일 1코테 2020. 12. 19. 19:47반응형
프로그래머스 2단계
소수 만들기
문제
programmers.co.kr/learn/courses/30/lessons/12977
답
import itertools def solution(nums): # 3가지 수를 이용하라고 했으므로 per~함수를 통해 3개의 조합들을 저장한다. nums = map(str, nums) n = list(itertools.permutations(nums, 3)) # dictionary에는 총 더한값과 그 수를 구성하는 요소들이 들어간다. # {3: [0, 1,2], 5:[1,2,2], [0,2,3] 등등등.... d = {} for i in n: i = list(map(int, i)) i.sort() s = sum(i) if s not in d: d[s] = [i] else: if i not in d[s]: d[s].append(i) # d에서 하나씩 출력하여 해당값이 소수인지 아닌지 판별해준다. answer = 0 for i in d.keys(): count = 0 for j in range(1, i//2+1): if i%j == 0: count += 1 if count > 1: break # 만약 소수가 맞다면 그 수를 구성하는 요소의 갯수를 모두 answer에 더해준다. # 5:[1,2,2], [0,2,3]의 경우 answer에는 2가 들어감. if count == 1: answer += len(d[i]) return answer
미리 n에서 중복값을 다 제거해놓고 i 전체를 append하는게 아닌 1를 추가하는 방식으로 가면 더 깔끔했을듯..!!
다른사람 풀이
def solution(nums): from itertools import combinations as cb answer = 0 for a in cb(nums, 3): cand = sum(a) # 굳이 1부터 할 필요없이 2부터하면 count를 안해줘도 되는군..!! for j in range(2, cand): if cand%j==0: break else: answer += 1 return answer
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[🦩 프로그래머스] 최솟값 만들기 / 3진법 뒤집기 (0) 2020.12.21 [🐉 백준 12단계] 정렬 (0) 2020.12.21 [💕 프로그래머스] 소수 찾기 (0) 2020.12.19 [💕 프로그래머스] 가장 큰 수 (0) 2020.12.18 [💕 프로그래머스] 구명보트 (0) 2020.12.16