티스토리 뷰
코딩테스트 연습 - 소수 찾기
한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이
programmers.co.kr
접근방법
- 노다가성이 짙은 풀이를 했다....
- 소수를 판별하는 함수를 활용했다.
- 주어진 문자열을 가지고 순열을 만들려고 했는데 자료형 등 고려할게 많아 생각보다 시간이 오래 걸렸다.
- 다른 분들의 좋은 풀이방법이 있어서 추가로 넣었다.
내 풀이
import math
from itertools import permutations
def isPrime(n):
for i in range(2, int(math.sqrt(n)+1)):
if n % i == 0: # 2부터 시작하는 정수들로 나누어 떨어진다면 소수가 아니다
return False
else:
return True # 2부터 시작하는 정수들 모두 나누어 떨어지지 않으면 소수이다
def countIsPrime(numbers):
cnt = 0
visited = [0, 1]
for i in range(1, 8):
nums_for_num = list(permutations(numbers, i))
perm_nums = []
if nums_for_num:
for tuple_num in nums_for_num:
tt = ''
for tn in tuple_num:
tt += tn
perm_nums.append(int(tt))
#print(perm_nums) #[1, 7] [17, 71] // [0, 1, 1] [1, 1, 10, 11, 10, 11] [11, 11, 101, 110, 101, 110]
for perm_num in perm_nums:
if isPrime(perm_num) and perm_num not in visited:
visited.append(perm_num)
cnt += 1
return cnt
다른 풀이
- 내장함수만으로 풀었다. 문자열로 조합을 만드는 과정이 인상깊었다.
primeSet = set()
def isPrime(number):
if number in (0, 1):
return False
for i in range(2, number):
if number % i == 0:
return False
return True
def makeCombinations(str1, str2):
if str1 != "":
if isPrime(int(str1)):
primeSet.add(int(str1))
# 문자열로 조합 가능한 경우를 생성
for i in range(len(str2)):
makeCombinations(str1 + str2[i], str2[:i] + str2[i + 1:])
def solution(numbers):
makeCombinations("", numbers)
answer = len(primeSet)
return answer
'Coding Test' 카테고리의 다른 글
[Jungol] 1307. 문자사각형 (0) | 2021.12.03 |
---|---|
[Jungol] 1291. 구구단 (0) | 2021.12.02 |
[Programmers][스택/큐] 기능개발 python (211104) (0) | 2021.11.05 |
2021 카페24 개발자 채용 챌린지(211023) (0) | 2021.10.23 |
[Programmers] DEV MATCHING (211016) (0) | 2021.10.16 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 개발언어순위
- ssafy결과
- 싸피6기
- 개발자
- ssafy후기
- 스프링부트
- ssafy6기
- 개발자로드맵
- 개발자도서추천
- 개발도서추천
- 맥과윈도우로깃허브
- 개발자책추천
- 브왈라
- 개발언어추천
- SSAFY
- 깃허브계정2개
- intj여자
- ssafy합격후기
- 한글무료폰트추천
- 무료폰트추천
- 클린코더
- 싸피
- 폰트
- 깃허브계정
- 개발자커리
- 폰트추천
- 상업용무료폰트
- 코딩도서
- 임대차3법
- 디즈니얼굴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 |
글 보관함