🤔 문제
https://programmers.co.kr/learn/courses/30/lessons/92335
😀 풀이
본 문제는 문제 조건에 맞는 단순 구현 문제였습니다.
풀이 과정은 아래의 세 단계로 나눌 수 있습니다.
1. 양의 정수 n이 들어왔을 때 이를 소수로 변환하는 과정
2. 문제 조건에 맞게 소수 판단의 대상이 될 숫자들을 확인하는 과정
3. 2번 과정에서 찾은 숫자들이 소수인지 확인하는 과정
위 세 단계에 맞는 함수를 각각 만들었고 구현은 풀이 코드를 보면 쉽게 확인이 가능합니다.
1번과 3번의 과정에 해당하는 함수는 각각 진법 변환과 소수 판단 함수라 어렵지 않게 구현이 가능합니다.
대신 2번 과정에서 '0'을 기준으로 split을 하게 된다면 주의할 점이 있는데 '111001'을 '0' 기준 split 하게 되면 기대하는 결과인 [111, 1] 이 나오지 않고 [111, ' ', 1] 이 나오는 것을 알 수 있습니다. 따라서 원하는 결과를 얻기 위해서는 이에 대한 처리를 추가적으로 해줘야 합니다.
💻 풀이 코드는 아래와 같습니다.
import math
def convert(n, k): // 진수 변환하는 함수
result = ''
while n:
div, mod = divmod(n, k)
n = div
result = str(mod) + result
return result
def isPrime(n): // 소수 구하는 함수
if n == 1:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
def getNumberArray(n): // 변환된 수를 보고 문제 조건에 맞게 숫자들을 뽑는 함수
return map(int, filter(lambda x : x != '', n.split('0')))
def solution(n, k):
answer = 0
convertedNumber = convert(n, k)
numberArray = getNumberArray(convertedNumber)
for num in numberArray:
if isPrime(num):
answer += 1
return answer
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 경주로 건설 - Python (2) | 2022.02.21 |
---|---|
[프로그래머스] [1차] 셔틀버스 - Python (0) | 2022.02.13 |
[프로그래머스] 주차 요금 계산 - Python (0) | 2022.02.06 |
[프로그래머스] [3차] n진수 게임 - Python (0) | 2022.02.04 |
[프로그래머스] [3차] 파일명 정렬 - Python (0) | 2022.02.01 |