๋‚ด ์ธ์ƒ์—์„œ ๋ฏฟ์„ ๊ฑด ์˜ค์ง ๋‚˜ ์ž์‹ ๋ฟ!

The only one you can truly trust is yourself.

๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Python ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค k์ง„์ˆ˜์—์„œ ์†Œ์ˆ˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ

๐ŸŽฎinspirer9 2023. 2. 21. 00:15
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์„ค๋ช…

์–‘์˜ ์ •์ˆ˜ 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/7

 

์ •๊ทœํ‘œํ˜„์‹(Regular Expression) with ํŒŒ์ด์ฌ . ? + *๊ธฐํ˜ธ re.compile(), re.findall(), re.sub() (1)

์ •๊ทœํ‘œํ˜„์‹ ์ •๊ทœ์‹(ๆญฃ่ฆๅผ)์€ ํŠน์ •ํ•œ ๊ทœ์น™์„ ๊ฐ€์ง„ ๋ฌธ์ž์—ด์˜ ์ง‘ํ•ฉ์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ํ˜•์‹ ์–ธ์–ด ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ •๊ทœํ‘œํ˜„์‹์„ ์‰ฝ๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๊ทœํ‘œํ˜„์‹์€ ๋ชจ

jh2021.tistory.com

https://jh2021.tistory.com/8?category=967585 

 

์ •๊ทœํ‘œํ˜„์‹(Regular Expression) with ํŒŒ์ด์ฌ . ? + *๊ธฐํ˜ธ re.compile(), re.findall(), re.sub() (2)

์ด์ „ ๊ธ€์—์„œ๋Š” ์ •๊ทœํ‘œํ˜„์‹์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐํ˜ธ์— ๋Œ€ํ•ด ์„ค๋ช…ํ–ˆ์—ˆ๋Š”๋ฐ์š”. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” re๋ชจ๋“ˆ์˜ ํ•จ์ˆ˜ ํ™œ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. re.match() ์™€ re.search()์˜ ์ฐจ์ด search()๊ฐ€ ์ •๊ทœ ํ‘œํ˜„์‹ ์ „

jh2021.tistory.com

 

728x90
๋ฐ˜์‘ํ˜•