코딩한걸음
728x90
반응형

Today I Learned


어떤 문제가 있었는지

# https://school.programmers.co.kr/learn/courses/30/lessons/42839
# 소수 찾기

# 문제 설명
# 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 
# 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.
# 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때,
# 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 
# solution 함수를 완성해주세요.

# 제한사항
# numbers는 길이 1 이상 7 이하인 문자열입니다.
# numbers는 0~9까지 숫자만으로 이루어져 있습니다.
# "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다.

프로그래머스 코딩테스트 소수찾기 문제


내가 시도해 본 것들

# 필요한 변수들 정의
numbers = "123"
num_list = []
arr = []
answer = 0

# 일단 하드코딩하면서 생각해보기
for i in range(len(numbers)):
    # 1자리수 넣기
    arr.append(numbers[i])
    for j in range(len(numbers)):
        if i != j:
            # 2자리수 넣기
            arr.append(numbers[i]+numbers[j])
            for k in range(len(numbers)):
                if i != j and j != k and i != k:
                    # 3자리수 넣기
                    arr.append(numbers[i]+numbers[j]+numbers[k])
            
print(arr)

이런식으로 하드코딩 해봤다. 하지만 for문이 이렇게 중첩되는게 좋지않기 때문에

다른방식으로 찾는게 좋을거같다


어떻게 해결 했는지

일단은 하드코딩으로 시도해보고 힘들다면 관련 함수를 이용하는게 좋다고 생각한다

from itertools import permutations
list(permutations(list,n))

list(permutations( list, n )) 는 리스트의 인자들이 중복되지 않게 n자리수 순서쌍을 찾아준다.

 

numbers = "123"
num_list = []
arr = []
answer=0
# 먼저 숫자조합을 찾아야함
# 제한사항에 길이 1이상 7이하임
# 일단 하드코딩하면서 생각

# numbers를 리스트로
for i in numbers:
    num_list.append(i)

# permutations 를 이용해서 중복되지 않는 조합 구하기
from itertools import permutations

# for문으로 permutations 자리수 조합 바로 찾기 
for i in range(1,len(num_list)+1):
    a = list(permutations(num_list,i))

    # for문으로 찾은 조합들 문자열로 만들기
    for j in a:
    
        # 문자열 초기화
        number=""
        for k in j:
            number += k

        # 문자열 arr에 숫자로 넣기 및 0,1 거르기
        if int(number)!=0 and int(number)!=1 :
            arr.append(int(number))

# set으로 중복 제거
arr = set(arr)

# 소수찾기
for i in arr:
    arr2 = []
    for j in range(2,int(i**(1/2)+1)):
        if i%j==0: arr2.append(j)
    if len(arr2)==0: answer+=1
print(answer)

permutations를 쓰면 엄청 쉽지만 안쓰면 어려운거같다..


무엇을 새롭게 배웠는지

permutations의 활용법에 대해 추가적으로 배웠다.

itertools의 함수들이 뭐가있는지 한번 더 곱씹어봐야겠다.

728x90
반응형
profile

코딩한걸음

@Joonyeol_Yoon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!