일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 사회적 사실
- Best of the Best
- BoB 12기 최종합격 후기
- CodeEngn
- 철학
- 리버싱
- 자살론
- CodeEngn Basic 5
- 사회분업론
- 코드엔진
- 에밀 뒤르켐
- h4ckinggame
- bob
- CodeEngn Basic 01
- 논문리뷰
- 디지털 포렌식 트랙
- BoB 12기
- codeengn basic rce 01
- malware
- 코드엔진 basic 5
- 코드엔진 베이직
Archives
- Today
- Total
SEO
[프로그래머스/파이썬] 소수 찾기 본문
반응형
문제 설명
한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.
각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.
제한사항
- numbers는 길이 1 이상 7 이하인 문자열입니다.
- numbers는 0~9까지 숫자만으로 이루어져 있습니다.
- "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다.
입출력 예
numbers return
"17" | 3 |
"011" | 2 |
입출력 예 설명
numbers return
"17" | 3 |
"011" | 2 |
예제 #1
[1, 7]으로는 소수 [7, 17, 71]를 만들 수 있습니다.
예제 #2
[0, 1, 1]으로는 소수 [11, 101]를 만들 수 있습니다.
- 11과 011은 같은 숫자로 취급합니다.
from itertools import permutations
def combi(arr):
result = []
for i in range(len(arr)):
result.append(int("".join(arr[i])))
return result
def solution(numbers):
answer = 0
numbers = list(numbers)
tmp = []
for i in range(1,len(numbers)+1):
tmp += list(permutations(numbers, i))
tmp = set(combi(tmp))
for i in tmp:
count = 0
for j in range(2, i):
if i % j == 0:
break
else:
count += 1
print(count)
if count == i - 2:
answer += 1
return answer
- permutations를 통해 주어진 숫자 카드에 대한 순열을 만듭니다. permutations는 앞뒤 순서까지 바꿔 순열을 생성하는 모듈입니다.
- 2부터 N-1까지 순회하며 나눠지는 수가 있는지 검사합니다.
- 만약 count가 N-2(1과 자기 자신을 뺀)와 같다면 소수인 것으로 판단합니다.
반응형
'코딩테스트 > 문제 풀이' 카테고리의 다른 글
[프로그래머스/파이썬] 피로도 (0) | 2025.01.30 |
---|---|
[프로그래머스/파이썬] 카펫 (0) | 2025.01.27 |
[프로그래머스/파이썬] 모의고사 (0) | 2025.01.19 |
[프로그래머스/파이썬] 최소직사각형 (0) | 2025.01.18 |
[프로그래머스/파이썬] H-Index (0) | 2025.01.16 |