programmers.co.kr/learn/courses/30/lessons/42839?language=python3
<문제>
한 자리 숫자가 적힌 종이 조각이 흩어져 있을 때, 흩어진 조각들을 붙여 소수를 몇 개 만들 수 있는지 알아내려고 함.
각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수 완성하시오.
<constraint>
- numbers는 길이가 1 이상 7 이하인 문자열
- numbers는 0~9까지 숫자만으로 이루어짐
- "013"은 0과 1, 3이 적힌 종이 조각들 의미
<example>
< 풀이 방법 >
- 함수: solution, isPrime
- def solution(numbers):
- 각 카드의 조합을 중복 제거하여 list에 추가
- list에 모든 경우의 수 추가한 뒤 제거하는 방법도 ok
- if isPrime == true:
- ① 소수들만 묶어놓은 list에 추가 (numbersAll)
- ② count 변수 + 1
- numbersAll 중복제거 필요
- set 함수 사용
- return len(numbersAll)
- def isPrime(n): n이 소수인지 판별하는 함수
- n이 0 또는 1인 경우, return False
-2부터 n-1까지 반복하며, n을 나누었을 때 나누어 떨어지면 return False
- 모두 해당되지 않는다면, return True
** 모든 경우의 수 구하는 방법
- 우선 itertools의 permutations를 import
- permutations( , i): 순열의 성질을 이용하여 길이가 i인 모든 경우의 수를 구해줌
- 길이가 1인 것부터 문자열 길이만큼 반복하여 모든 경우의 수 구하기
성공 코드 ① 리스트에 추가하여 return len(list)
실패 코드 ② count 변수 + 1
- line 7 이후 set 함수 통해 중복을 제거하고자 했지만, 결과는 동일하게 기댓값과 달라 실패
** 헷갈리는 개념 정리하기
- set 집합
- map 함수
: 리스트/튜플의 요소를 지정된 함수로 처리해주는 함수 (새 리스트 생성해줌)
- list(map(function, list)) | tuple(map(function, tuple))
code review 통해 보다 더 간단하게 줄이는 과정 거쳐 코드 수정
ⓕ ⓘ ⓝ ⓐ ⓛ ⓒ ⓞ ⓓ ⓔ
'Python ◡̈ > 차근차근 Python' 카테고리의 다른 글
[programmers] python DFS/BFS 네트워크 (0) | 2021.04.07 |
---|---|
[programmers] python stack/queue 스택/큐 주식가격 (0) | 2021.03.31 |
[programmers] python 스택/큐 stack/queue 프린터 (0) | 2021.03.31 |
[programmers] python 완전탐색 카펫 (0) | 2021.03.24 |
[백준 2576번] 홀수 (0) | 2021.03.24 |