๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

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

1. ๋ฌธ์ œ ์„ค๋ช…

๋ฌธ์ œ ๋งํฌ

  • ์ž…๋ ฅ
    • k: k์ง„์ˆ˜
    • n: ์–‘์˜ ์ •์ˆ˜
  • ์ถœ๋ ฅ : ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜

2. ์ฝ”๋“œ

import math
def convert(n, base):#n:10์ง„์ˆ˜ base: ์ง„์ˆ˜ k
    T = "0123456789ABCDEF"
    q, r = divmod(n, base)
    if q == 0:
        return T[r]
    else:
        return convert(q, base) + T[r]

def solution(n, k):
    n = convert(n,k)
    count = 0
    check = True
    for num in n.split('0'):
        if num != '' and num != '1': #๋นˆ๊ฐ’์ด ์•„๋‹ˆ๊ณ  1์ด ์•„๋‹ ๋•Œ
            num = int(num)
            #์†Œ์ˆ˜์ธ์ง€ ๊ฒ€์‚ฌ
            for i in range(2,int(math.sqrt(num))+1):
                if num % i == 0: #๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€๋Š” ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด
                    check = False #์†Œ์ˆ˜๊ฐ€ ์•„๋‹˜
                    break
            if check: #check๊ฐ€ True๋ผ๋ฉด
                count +=1 #์†Œ์ˆ˜๋‹ˆ๊นŒ +1
    return count

3. ํšŒ๊ณ 

  • 10์ง„์ˆ˜๋ฅผ k์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ ํ›„, ์กฐ๊ฑด์— ๋งž๋Š” ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ฐพ์•„์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.
  • 10์ง„์ˆ˜๋ฅผ k์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ
    • ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค
    • ๋ชซ์ด 0์ด ๋  ๋•Œ๊นŒ์ง€ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•ด์•ผํ•˜๋ฉฐ ์ด ๊ณผ์ •์—์„œ ๋‚˜์˜จ ๋‚˜๋จธ์ง€๋“ค์„ ์—ญ์ˆœ์œผ๋กœ ๊ฒฐํ•ฉํ•ด์•ผํ•œ๋‹ค.
  • ์†Œ์ˆ˜๊ตฌํ•˜๊ธฐ
    • for num in n.split('0')
      • 0์„ ๊ธฐ์ค€์œผ๋กœ ์ž˜๋ผ์„œ ์ˆซ์ž๋“ค์ด ์†Œ์ˆ˜์ธ์ง€ ๊ฒ€์‚ฌ
      • ๋นˆ๋ฌธ์ž์—ด์ด ๋‚˜์˜ฌ ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ์กฐ๊ฑด๋ฌธ์„ ํ†ตํ•ด ์ œ์™ธ์‹œํ‚ค๊ธฐ :if num != '
      • 1์ด๋ฉด ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์• ์ดˆ์— count ๋Œ€์ƒ์—์„œ ์ œ์™ธ : num != '1'
    • ์†Œ์ˆ˜์ธ์ง€ ๊ฒ€์‚ฌ
      • range(2, n + 1) ๋กœ ํ•˜์ž ์‹œ๊ฐ„ ์ดˆ๊ณผ
      • ์•ฝ์ˆ˜์˜ ํŠน์ง•์„ ์ด์šฉํ•ด์„œ ๋ฐ˜๋ณต๋ฌธ์˜ ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ
        • range(2,int(math.sqrt(num))+1) ๋กœ ๋ณ€๊ฒฝ
        • ๋ฒ”์œ„ 2 ~ N์—์„œ N์˜ ์ œ๊ณฑ๊ทผ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๋ถ€๋ถ„๋“ค์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚˜๋ฉด, ์ œ๊ณฑ๊ทผ๊ฐ’๋ณด๋‹ค ํฐ ๋ถ€๋ถ„์˜ ๊ฐ’ ๋˜ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ๋œ๋‹ค๋Š” ๋ง

4. ์ฐธ๊ณ 

https://seongonion.tistory.com/43
https://codingdojang.com/scode/458