-
프로그래머스 소수 찾기(LV2)알고리즘 2020. 8. 6. 18:06
200801 기상 : 9시 20분!
문제 설명
한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.
각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해 주세요.
제한사항
numbers는 길이 1 이상 7 이하인 문자열입니다.
numbers는 0~9까지 숫자만으로 이루어져 있습니다.
013은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다.
입출력 예
numbers
return
17
3
011
2
⛏첫 번째
5개 맞음 ㅋ
import itertools def solution(s): # 정답 변수 answer = 0 s=list(map(''.join, itertools.permutations(s))) tmp=int(s[0]) while tmp >10: s.append(tmp%10) tmp /=10 s=set(map(int,s)) # 중복 허용 안할라고 사용 for i in s : if i%2!=0 and i!=1: answer +=1 return answer
⛏두 번째
반타작
from itertools import permutations # 라이브러리 추가 permutation 쓰기 위해서 def solution(n): # 소수 갯수 넣는 변수 answer=0 # '17'을 넣을 경우 17,71 만 들어감 그래서 1, 7을 따로 넣기 위한 변수 만듦 tmp=list(n) # ['1','7'],['7','1'] 을 join해줌 그러면 17,71 a = list( map("".join, permutations(n))) #각 1,7, 넣어줌 for i in tmp : a.append(i) # 중복 값 제거를 위해 set 사용 a=set(map(int,a)) # 0 1 값 제거 함 a -= set(range(0, 2)) # 소수 찾는 반복문 for i in a : for j in range(2,i): if i%j==0: break else: answer +=1 # for ~ else 그 안에 반복문 다 완료했을 경우, else 실행. 소수 추가. return answer
⛏세 번째
질문하기 참고하고 수정
def solution(n): # 소수 갯수 넣는 변수 answer=0 # 계산할 리스트 변수 a=[] # 모든 경우의 수를 넣어줌 for i in range(1, len(n)+1):# 1~문자열의 갯수 # 17인 경우 1의 자리 1, 7 # 다음 반복문에서 2가 들어가니까 10의 자리 17,71 numbers=permutations(n,i) # 각 값들 연결시켜서 a 에 넣어줌. for j in numbers: tmp="".join(j) a.append(int(tmp)) # 중복값 제거 a=set(a) # 0 1 값 제거 함 a -= set(range(0, 2)) # 소수 찾는 반복문 for i in a : for j in range(2,i): if i%j==0: break# 나누어떨어지면 소수 X else: answer +=1 # for ~ else 그 안에 반복문 다 완료했을 경우, else 실행. 소수 추가. return answer
느낀 점
나태해 너무.. ㅠ
운동 조금 했다고 몸이 아프다
갑자기 생각난 건데
고등학교 때 친구네 집에서 자는데 너무 민폐인 거 같아서
아침 6시 50분에 나와서 학교 갔는데
알고 보니까 어머니가 나 맛있는 거 해주시려고 아침에 일어나셔서
제육볶음 해주신 거 생각난다ㅠ 모르고 그냥 나와버렸음 흑 ㅠ
여긴 그냥 일기장인데?
'알고리즘' 카테고리의 다른 글
프로그래머스 큰 수 만들기(Lv2) (0) 2020.08.06 백준 바이러스(BFS, DFS) (0) 2020.08.06 프로그래머스 [1차] 비밀지도(Python) (0) 2020.08.06 프로그래머스 [1차] 다트 게임 (0) 2020.08.06 프로그래머스 다리를 지나는 트럭(LV 1) (0) 2020.07.25