๋ฌธ์ ์ค๋ช
์์ ์ ์ n์ด ์ฃผ์ด์ง๋๋ค. ์ด ์ซ์๋ฅผ k์ง์๋ก ๋ฐ๊ฟจ์ ๋, ๋ณํ๋ ์ ์์ ์๋ ์กฐ๊ฑด์ ๋ง๋ ์์(Prime number)๊ฐ ๋ช ๊ฐ์ธ์ง ์์๋ณด๋ ค ํฉ๋๋ค.
- 0P0์ฒ๋ผ ์์ ์์ชฝ์ 0์ด ์๋ ๊ฒฝ์ฐ
- P0์ฒ๋ผ ์์ ์ค๋ฅธ์ชฝ์๋ง 0์ด ์๊ณ ์ผ์ชฝ์๋ ์๋ฌด๊ฒ๋ ์๋ ๊ฒฝ์ฐ
- 0P์ฒ๋ผ ์์ ์ผ์ชฝ์๋ง 0์ด ์๊ณ ์ค๋ฅธ์ชฝ์๋ ์๋ฌด๊ฒ๋ ์๋ ๊ฒฝ์ฐ
- P์ฒ๋ผ ์์ ์์ชฝ์ ์๋ฌด๊ฒ๋ ์๋ ๊ฒฝ์ฐ
- ๋จ, P๋ ๊ฐ ์๋ฆฟ์์ 0์ ํฌํจํ์ง ์๋ ์์์
๋๋ค.
- ์๋ฅผ ๋ค์ด, 101์ P๊ฐ ๋ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, 437674์ 3์ง์๋ก ๋ฐ๊พธ๋ฉด 211020101011์ ๋๋ค. ์ฌ๊ธฐ์ ์ฐพ์ ์ ์๋ ์กฐ๊ฑด์ ๋ง๋ ์์๋ ์ผ์ชฝ๋ถํฐ ์์๋๋ก 211, 2, 11์ด ์์ผ๋ฉฐ, ์ด 3๊ฐ์ ๋๋ค. (211, 2, 11์ k์ง๋ฒ์ผ๋ก ๋ณด์์ ๋๊ฐ ์๋, 10์ง๋ฒ์ผ๋ก ๋ณด์์ ๋ ์์์ฌ์ผ ํ๋ค๋ ์ ์ ์ฃผ์ํฉ๋๋ค.) 211์ P0 ํํ์์ ์ฐพ์ ์ ์์ผ๋ฉฐ, 2๋ 0P0์์, 11์ 0P์์ ์ฐพ์ ์ ์์ต๋๋ค.
์ ์ n๊ณผ k๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. n์ k์ง์๋ก ๋ฐ๊ฟจ์ ๋, ๋ณํ๋ ์ ์์์ ์ฐพ์ ์ ์๋ ์ ์กฐ๊ฑด์ ๋ง๋ ์์์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ ์ฌํญ
- 1 ≤ n ≤ 1,000,000
- 3 ≤ k ≤ 10
์ ์ถ๋ ฅ ์
n | k | result |
437674 | 3 | 3 |
110011 | 10 | 2 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
110011์ 10์ง์๋ก ๋ฐ๊พธ๋ฉด 110011์ ๋๋ค. ์ฌ๊ธฐ์ ์ฐพ์ ์ ์๋ ์กฐ๊ฑด์ ๋ง๋ ์์๋ 11, 11 2๊ฐ์ ๋๋ค. ์ด์ ๊ฐ์ด, ์ค๋ณต๋๋ ์์๋ฅผ ๋ฐ๊ฒฌํ๋๋ผ๋ ๋ชจ๋ ๋ฐ๋ก ์ธ์ด์ผ ํฉ๋๋ค.
๋ฌธ์ ๊ฐ ์ ์ํ๋ฆฐ๋ค๋ฉด๐ข
ํํธ๊ฐ ํ์ํ๊ฐ์? [์ฝ๋ฉํ ์คํธ ์ฐ์ต ํํธ ๋ชจ์์ง]์ผ๋ก ์ค์ธ์! → ํด๋ฆญ
ํ์ด
- ์ด๊ฑฐ ๋ฌธ์ ์ฝ์๋ง์ ๋ฌด์ง์ฑ ์ฝ๋ฉํ๊ณ , ์์ ํ๋ณํ๋ ๋ถ๋ถ์ ์ธํฐ๋ท์์ ๊ฐ์ ธ์ด.
- ๋จผ์ 2์ง์๋ก ๋ฐ๊พธ๊ณ , ๋ฌธ์์ด๋ก ๋ณํ -> ๋ค์ง์ด ์ฃผ๊ธฐ.
- ์ ๊ทํํ์์ผ๋ก 0 ๊ธฐ์ค์ผ๋ก split ํด์ ๋ฆฌ์คํธ๋ก ๋ง๋ค๊ธฐ + ๋ฌธ์์ด์ด๋๊น int๋ก ๋ณํ
- ์์์ธ์ง ํ๋ณ. isitPrime() ํจ์ ์ฌ
import re
def isitPrime(k):
if k==2 or k==3: return True
if k%2==0 or k<2: return False
for i in range(3, int(k**0.5)+1, 2):
if k%i==0:
return False
return True
def solution(n, k):
kn = 0 # n์ k์ง์๋ก ๋ฐ๊พธ๊ธฐ
while n > 0:
kn += n % k
kn *= 10
n //= k
skn = str(kn)
skn = skn[::-1]
numbers = re.split(r'[0]', skn)
numbers = [int(n) for n in numbers if n != '' and n != '1'] # print(numbers)
kn = 0
for n in numbers:
if isitPrime(n):
kn += 1
return kn
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (48.34ms, 10.5MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.07ms, 10.5MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.09ms, 10.5MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.11ms, 10.4MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.10ms, 10.3MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.07ms, 10.4MB)
ํ
์คํธ 7 ใ ํต๊ณผ (0.08ms, 10.4MB)
ํ
์คํธ 8 ใ ํต๊ณผ (0.07ms, 10.4MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.08ms, 10.5MB)
ํ
์คํธ 10 ใ ํต๊ณผ (0.10ms, 10.3MB)
ํ
์คํธ 11 ใ ํต๊ณผ (0.08ms, 10.4MB)
ํ
์คํธ 12 ใ ํต๊ณผ (0.07ms, 10.4MB)
ํ
์คํธ 13 ใ ํต๊ณผ (0.08ms, 10.4MB)
ํ
์คํธ 14 ใ ํต๊ณผ (0.07ms, 10.5MB)
ํ
์คํธ 15 ใ ํต๊ณผ (0.07ms, 10.5MB)
ํ
์คํธ 16 ใ ํต๊ณผ (0.07ms, 10.5MB)
- ๊ณ ์์ ํ์ด, ๋ฐ๊ฐ, ์๋ ์๋๊ฐ ๋ฐ.
import math
def solution(n, k):
x = ''
while n:
a = n%k
x = str(a) + x
n = n//k
answer = 0
A = x.split('0')
for prime in A:
if not prime.isdigit(): continue
prime = int(prime)
if prime in [1,4,6,8,9,10,12,14,15]: continue
if prime in [2,3,5,7,11,13]:
answer += 1
continue
for i in range(3,int(math.sqrt(prime))+1,2):
if prime%i ==0: break
else:
answer += 1
return answer
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (45.32ms, 10.4MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.03ms, 10.4MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.04ms, 10.5MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.03ms, 10.4MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.03ms, 10.4MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.02ms, 10.4MB)
ํ
์คํธ 7 ใ ํต๊ณผ (0.03ms, 10.4MB)
ํ
์คํธ 8 ใ ํต๊ณผ (0.02ms, 10.5MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.03ms, 10.4MB)
ํ
์คํธ 10 ใ ํต๊ณผ (0.03ms, 10.5MB)
ํ
์คํธ 11 ใ ํต๊ณผ (0.03ms, 10.4MB)
ํ
์คํธ 12 ใ ํต๊ณผ (0.03ms, 10.4MB)
ํ
์คํธ 13 ใ ํต๊ณผ (0.03ms, 10.6MB)
ํ
์คํธ 14 ใ ํต๊ณผ (0.03ms, 10.4MB)
ํ
์คํธ 15 ใ ํต๊ณผ (0.03ms, 10.5MB)
ํ
์คํธ 16 ใ ํต๊ณผ (0.03ms, 10.6MB)
- ๋ ๋น ๋ฅธ ๊ฒ ๊ฐ์๋ฐ ํ ์คํธ 1๋ฒ๋ง ๋๋ฆฐ ๋ฐฉ์
def conv(n, k):
s = ''
while n:
s += str(n%k)
n //= k
return s[::-1]
# n์ด ์์์ธ์ง ํ์
def isprime(n):
if n <= 1: return False
i = 2
while i*i <= n:
if n%i == 0: return False
i += 1
return True
def solution(n, k):
s = conv(n,k)
cnt = 0
for num in s.split('0'):
if not num: continue # ๋น ๋ฌธ์์ด์ ๋ํ ์์ธ์ฒ๋ฆฌ
if isprime(int(num)): cnt += 1
return cnt
ํ
์คํธ 1 ใ ํต๊ณผ (140.48ms, 10.2MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.03ms, 10.3MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.02ms, 10.4MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.03ms, 10.4MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.02ms, 10.4MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.03ms, 10.4MB)
ํ
์คํธ 7 ใ ํต๊ณผ (0.04ms, 10.3MB)
ํ
์คํธ 8 ใ ํต๊ณผ (0.02ms, 10.3MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.02ms, 10.3MB)
ํ
์คํธ 10 ใ ํต๊ณผ (0.02ms, 10.2MB)
ํ
์คํธ 11 ใ ํต๊ณผ (0.04ms, 10.2MB)
ํ
์คํธ 12 ใ ํต๊ณผ (0.03ms, 10.4MB)
ํ
์คํธ 13 ใ ํต๊ณผ (0.02ms, 10.4MB)
ํ
์คํธ 14 ใ ํต๊ณผ (0.04ms, 10.3MB)
ํ
์คํธ 15 ใ ํต๊ณผ (0.02ms, 10.4MB)
ํ
์คํธ 16 ใ ํต๊ณผ (0.02ms, 10.4MB)
๋.
์ ๊ทํํ์ ์ฐธ๊ณ ํ ๋ธ๋ก๊ทธ
https://jh2021.tistory.com/8?category=967585
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > Python ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค [1์ฐจ] ํ๋ ์ฆ4๋ธ๋ก (1) | 2023.02.21 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค [1์ฐจ] ๋ด์คํด๋ฌ์คํฐ๋ง (0) | 2023.02.21 |
ํ๋ก๊ทธ๋๋จธ์ค [1์ฐจ] ์บ์ (0) | 2023.02.20 |
ํ๋ก๊ทธ๋๋จธ์ค ์คํฌํธ๋ฆฌ (0) | 2023.02.20 |
ํ๋ก๊ทธ๋๋จธ์ค ๋ฐฉ๋ฌธ ๊ธธ์ด (0) | 2023.02.20 |