728x90
https://school.programmers.co.kr/learn/courses/30/lessons/92335?language=python3
🐾 20221021
1. k진수로 변환
2. 소수 찾아 개수 구하기
코드 :
def solution(n, k):
word = ""
# k 진수로 변환
while n :
word = str(n%k) + word
n = n//k
word = word.split('0')
cnt = 0
for w in word :
# 빈공간이라면
if len(w) == 0 : continue
# 0 또는 1이라면
if int(w) < 2 : continue
# 소수 찾기
sosu = True
for i in range(2,int(int(w)**0.5)+1 ) :
if int(w) % i==0 :
sosu = False
break
if sosu : cnt+=1
return cnt
사실 간단한데 너무 어렵게 생각했다.
진수로 변환하는 법, 소수 판별하는 법은 외우자!!!
복습하면서 다시 풀어봤는데
다른건 다 맞았는데 1번에서 시간초과가 났다.
이유는 소수를 판별할 때 끝까지 다 확인했기 때문이다.
소수를 판별할 때 제곱근까지만 확인하면 된다!!
for i in range(2,int(r**0.5)+1) :
if r%i ==0 :
제곱근은 r**0.5를 하면 구할 수 있다.
복습하면서 만든 코드 :
def solution(n, k):
cnt = 0
res = ''
# k진수로 만들기
while n :
res+= str((n%k))
n = n//k
res = res[::-1]
# 0을 기준으로 split
res=res.split('0')
# 소수 판별
for r in res :
if not r : continue
isTrue = 1
r = int(r)
if r <= 1 : continue
# 제곱근까지만 확인하면 된다!!
# 전부 확인하면 시간초과
for i in range(2,int(r**0.5)+1) :
if r%i ==0 :
isTrue = 0
break
if isTrue : cnt +=1
return cnt
참고 블로그 :
반응형
'알고리즘 > 프로그래머스문제풀이' 카테고리의 다른 글
SQL_group,having,join (0) | 2022.09.21 |
---|---|
[Python/프로그래머스]양궁대회_Bfs (1) | 2022.09.19 |
[Python/프로그래머스]추석 트래픽 (0) | 2022.06.29 |
[Python/프로그래머스]메뉴 리뉴얼 (0) | 2022.06.29 |
[Python/프로그래머스] 숫자 문자열과 영단어 (Level 1) (0) | 2022.06.29 |