728x90
멍청 이슈로 너무 오래 풀었다...
문제 풀이 과정은 다음과 같다.
- 종이 조각들을 조합할 수 있는 모든 경우의 수를 구한다.
- 숫자로 변환 후 set 안에 넣어 중복되는 경우의 수를 삭제한다.
- 소수 인지 확인한다.
여기에서 라이브러리를 사용하지 않았다가 삽질 했다.
앞으로도 자주 사용하게 될거 같아 기록해 놔야겠다.
순열과 조합 함수를 포함해 여러 iteration 를 만들어 준다.
count() : count(10) → 10 11 12 13 14 ...
accumulate() : accumulate([1,2,3,4,5]) → 1 3 6 10 15
chain() : chain('ABC', 'DEF') → A B C D E F
product('ABCD', repeat=2) → AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD
permutations('ABCD', 2) → AB AC AD BA BC BD CA CB CD DA DB DC
combinations('ABCD', 2) → AB AC AD BC BD CD
import itertools
def isPrime(num):
if num == 1 or num == 0:
return False
for i in range(2, num):
if not num % i:
return False
return True
def solution(numbers):
# numbers를 number로 잘라서 배열에 저장
num_arr = []
for number in numbers:
num_arr.append(number)
# 가능한 모든 조합 만듬 - 문자열
candidate_arrs = []
num_arr_len = len(num_arr)
for length in range(num_arr_len + 1):
candidate_arrs.append(list(itertools.permutations(num_arr, length)))
# 중복된 수 제거
candidate_set = set()
for candidate_arr in candidate_arrs:
for candidate in candidate_arr:
num = ''.join(candidate)
# '' 처리용 if 문
if len(num):
candidate_set.add(int(num))
# 소수 인것 찾기
prime_count = 0
for i in candidate_set:
if isPrime(i):
prime_count += 1
return prime_count
728x90
'TIL' 카테고리의 다른 글
99클럽 코테 스터디 9일차 TIL + DFS/BFS (0) | 2024.06.01 |
---|---|
99클럽 코테 스터디 8일차 TIL + 깊이/너비 우선 탐색(DFS/BFS) - 타겟 넘버 (0) | 2024.05.30 |
99클럽 코테 스터디 6일차 TIL + 완전 탐색 - 카펫 (0) | 2024.05.28 |
99클럽 코테 스터디 5일차 TIL + 정렬 - H-index (0) | 2024.05.27 |
99클럽 코테 스터디 4일차 TIL + 정렬 - 가장 큰 수 (0) | 2024.05.26 |