코딩테스트 연습 - 소수 찾기 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.

문자열로 구성된 numbers를 하나씩 떼어 정수 리스트로 변환하였다. 그후 numbers의 길이만큼 반복문을 걸어서, 각 길이에 대한 순열을 만들었다. permutations()을 통해 만든 겹치지 않는 수들을 소수 찾기 함수에 넣어 판단하였다. 이때 permutations가 만드는 순열은 튜플로 구성되어 있기 때문에 이를 map()을 통해 하나의 문자열로 join 시킨 뒤에, 정수로 다시 변환하는 과정이 필요했다. 만약 해당 수가 소수로 판정된다면 set에 넣고 마지막으로 set의 길이를 리턴하였다.
from itertools import permutations
def prime(x):
if x==1 or x==0:
return False
for i in range(2, int(x**0.5)+1):
if x%i==0:
return False
return True
def solution(numbers):
array=[]
result=[]
for i in range(len(numbers)):
array.append(int(numbers[i]))
for i in range(len(numbers)):
results=permutations(array,i+1)
for j in results:
if prime(int(''.join(map(str,j)))):
result.append(int(''.join(map(str,j))))
answer=len(set(result))
return answer
이 문제에서itertools 모듈에서 찾을 수 있는, 순열을 만드는 permutations와 combinations 메서드를 정리할 필요성을 느꼈다. permutations의 두번째 param으로는 순열의 길이를 지정해 줄 수 있다. combinations도 유사하게 사용할 수 있으나 순서가 중요하지 않은 경우에 사용된다.
from itertools import permutations
my_list = [1, 2, 3]
# 리스트의 순열 생성
permutations_result = permutations(my_list,3)
# 결과 출력
for perm in permutations_result:
print(perm)
# 출력은 다음과 같다
#(1, 2, 3)
#(1, 3, 2)
#(2, 1, 3)
#(2, 3, 1)
#(3, 1, 2)
#(3, 2, 1)
더하여 문제에서 자주 확인되는 return 값인, 문자열을 숫자 리스트로 만들거나, 숫자 리스트를 하나의 문자열로 표현하는 경우는 다음과 같다.
숫자 리스트 -> 하나의 문자열
my_numbers = [1, 2, 3, 4, 5]
#리스트가 정수로 되어 있기 때문에 스트링으로 변환 후에 join()
result_string = "".join(map(str, my_numbers))
print(result_string) # "12345"
#리스트 컴프리헨션 사용
my_numbers = [1, 2, 3, 4, 5]
result_string = "".join([str(num) for num in my_numbers])
print(result_string)
하나의 문자열 -> 숫자 리스트
# 문자열을 숫자 리스트로 변환하는 예제
my_string = "12345"
# 각 문자를 숫자로 변환하여 리스트에 추가
my_number_list = [int(char) for char in my_string]
print(my_number_list)
#[1, 2, 3, 4, 5]| [코테] 백준 파이썬 1759번 암호만들기 (0) | 2024.01.15 |
|---|---|
| [코테] 백준 파이썬 10972번 다음순열 - 리스트 컴프리헨션 (0) | 2024.01.15 |
| [코테] 프로그래머스 파이썬 Lv2. 숫자변환하기 (0) | 2024.01.08 |
| [코테] 프로그래머스 파이썬 Lv2. k진수에서 소수 개수 구하기 - 소수와 진수 (0) | 2024.01.06 |
| [코테] 프로그래머스 파이썬 Lv2. [3차] 파일명 정렬 - 람다 표현식 관련 (0) | 2024.01.06 |