- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/92335
Lv2. 문제이고, 스스로 푼 문제다!
마지막에 '0'이 0개인지 아닌지에 따라서 조건문을 나눴는데 그렇게 할 필요가 없었다
문제 이해
조건을 만족하는 수는 모두 0을 기준으로 나뉘어지므로 n을 k진수로 변경한다음 0을 제외한 수들이 10진수에서 소수인지 확인하는 로직으로 진행하면 된다
1. 주어진 수 n을 k진수로 변경 후 changed에 저장한다(여기서 changed는 문자열)
2. changed에서 0을 기준으로 숫자들을 구분한 뒤 changed에 저장한다(여기서 changed는 리스트)
3. 구분된 숫자들 중에서 소수가 있으면 answer += 1을 해준다
- 정답 풀이 :
import math
def isPrime(num):
if num <= 1:
return False
for i in range(2, int(math.sqrt(num)) + 1):
if num % i == 0:
return False
return True
def solution(n, k):
answer = 0
temp = n
changed = ''
mul = 0
while True:
if temp // k == 0:
break
temp //= k
mul += 1
temp = n
for i in range(mul, -1, -1):
if temp // (k ** i) != 0:
changed += str(temp // (k ** i))
temp = temp - (k ** i) * (temp // (k ** i))
else:
changed += '0'
changed = changed.split('0')
for each in changed:
if len(each) != 0:
if isPrime(int(each)):
answer += 1
return answer
- 시도해본 풀이 :
테스트 16개 중 2개에서 계속 틀렸다
어차피 0을 기준으로 숫자들을 구분하기 때문에 0의 갯수가 0개인 경우를 따로 확인할 필요는 없다
여기를 뺀 뒤 돌렸더니 코드가 정상 작동했다
if changed.count('0') == 0 :
if isPrime(n):
return 1
else:
return 0
import math
def isPrime(num):
flag = True
for i in range(2, int(math.sqrt(num)) + 1):
if num % i == 0:
flag = False
break
if flag:
return True
else:
return False
def solution(n, k):
answer = 0
temp = n
changed = ''
mul = 0
while True:
if temp // k == 0:
break
temp //= k
mul += 1
temp = n
for i in range(mul, -1, -1):
if temp // (k ** i) != 0:
changed += str(temp // (k ** i))
temp = temp - (k ** i) * (temp // (k ** i))
else:
changed += '0'
if changed.count('0') == 0 :
if isPrime(n):
return 1
else:
return 0
else:
changed = changed.split('0')
for each in changed:
if len(each) != 0 and int(each) > 1:
if isPrime(int(each)):
answer += 1
return answer
'코딩테스트 > 기출' 카테고리의 다른 글
[2018 KAKAO BLIND RECRUITMENT/ 프로그래머스] : [3차] n진수 게임 (0) | 2022.09.21 |
---|---|
[dfs, bfs / 프로그래머스] 43175번 : 타겟 넘버 (0) | 2022.09.20 |
[월간 코드 챌린지 시즌3 / 프로그래머스] 87390번 : n^2 배열 자르기 (0) | 2022.09.18 |
[2022 KAKAO BLIND RECRUITMENT/프로그래머스] 92341번 : 주차요금 계산 (0) | 2022.09.18 |
[2018 KAKAO BLIND RECRUITMENT / 프로그래머스] 17677번 : [1차] 뉴스 클러스터링 (0) | 2022.09.18 |