소스코드
def solution(n, k):
changedNum = ''
checkPrime = ''
answer = 0
while n != 0 :
changedNum += str(n%k)
n = n//k
changedNum = changedNum[::-1].split('0')
for i in (changedNum):
if i != '':
if isPrime(int(i)):
answer += 1
return answer
def isPrime(number):
if number==1:
return False
for i in range(2, int(number**(0.5))+1):
if number%i==0:
return False
return True
알고리즘
문제를 나눠보면 다음과 같이 2개만 구현하면 된다.
1. k진수로 변환
2. 소수인지 체크
1. k진수 변환
나머지를 나눠가며 갱신을 해주고 마지막에 reverse 해준다.
ex) 11 -> 3일때
나머지 = 2, 몫 = 3
나머지 = 0, 몫 = 1
하면 201인데 reverse 해줘야하니깐 :)
2. 소수인지 체크
그런 다음 0을 기준으로 숫자를 소수 판별을 해야하므로 split('0')함수를 써서 리스트로 만들어준다.
그러면 '201' -> ['2','1'] 이렇게 된다.
그런 다음 소수 판별 함수 적용해주면 된다.
3. 소수 판별 함수
11, 15,16,17 문제가 틀리는 사람들은 소수 판별함수 다시 작성해야한다.
'Coding test' 카테고리의 다른 글
[백준/17298/파이썬] 오큰수 - stack (2) | 2023.11.26 |
---|---|
[프로그래머스/주차 요금 계산/파이썬] (2) | 2023.11.23 |
[1912/백준/파이썬] 연속합 - DP (0) | 2023.11.21 |
[11053/백준/파이썬] 가장 긴 증가하는 부분 수열 - DP (1) | 2023.11.20 |
[프로그래머스/파이썬/구명보트] (0) | 2023.10.01 |