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

Algorithm

[SW Expert Academy] #1945. ๊ฐ„๋‹จํ•œ ์†Œ์ธ์ˆ˜๋ถ„ํ•ด - Python

1. ๋ฌธ์ œ

 

์ˆซ์ž N์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

N=2a x 3b x 5c x 7d x 11e

N์ด ์ฃผ์–ด์งˆ ๋•Œ a, b, c, d, e ๋ฅผ ์ถœ๋ ฅํ•˜๋ผ.


[์ œ์•ฝ ์‚ฌํ•ญ]

N์€ 2 ์ด์ƒ 10,000,000 ์ดํ•˜์ด๋‹ค.


[์ž…๋ ฅ]

๊ฐ€์žฅ ์ฒซ ์ค„์—๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง€๊ณ , ๊ทธ ์•„๋ž˜๋กœ ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์— N ์ด ์ฃผ์–ด์ง„๋‹ค.

 

10  
6791400
1646400
1425600
8575
185625
6480
1185408
6561
25
330750

[์ถœ๋ ฅ]

์ถœ๋ ฅ์˜ ๊ฐ ์ค„์€ '#t'๋กœ ์‹œ์ž‘ํ•˜๊ณ , ๊ณต๋ฐฑ์„ ํ•œ ์นธ ๋‘” ๋‹ค์Œ ์ •๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค.

(t๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๋ฒˆํ˜ธ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.)

 

#1 3 2 2 3 1
#2 6 1 2 3 0
#3 6 4 2 0 1
#4 0 0 2 3 0
#5 0 3 4 0 1
#6 4 4 1 0 0
#7 7 3 0 3 0
#8 0 8 0 0 0
#9 0 0 2 0 0
#10 1 3 3 2 0

 

2. ์†Œ์Šค์ฝ”๋“œ

num = int(input())

for i in range(1,num+1):
    a = 0
    b = 0
    c = 0
    d = 0
    e = 0
    
    n = int(input())
    
    while n!=1:
        if n%11 == 0:
            e += 1
            n = n//11
        elif n%7 == 0:
            d += 1
            n = n//7
        elif n%5 == 0:
            c += 1
            n = n//5
        elif n%3 == 0:
            b += 1
            n = n//3
        elif n%2 == 0:
            a += 1
            n = n//2

    print('#%d' %i,a,b,c,d,e)

 

3. ์†Œ์Šค์ฝ”๋“œ ์„ค๋ช…

test case์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋ณ€์ˆ˜num์— ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
test case์˜ ๊ฐฏ์ˆ˜๋งŒํผ ํ”„๋กœ๊ทธ๋žจ์„ ๋Œ๋ ค์•ผํ•˜๋ฏ€๋กœ, 1๋ถ€ํ„ฐ num๊นŒ์ง€ for๋ฌธ์„ ๋Œ๋ฆฐ๋‹ค.
์ž…๋ ฅ๋ฐ›๋Š” ์ˆซ์ž๋ฅผ ๋ณ€์ˆ˜n์ด๋ผ๊ณ  ํ•˜๊ณ , a,b,c,d,e๋Š” n์„ ์†Œ์ธ์ˆ˜ ๋ถ„ํ•ด ํ–ˆ์„ ๋•Œ,
๊ฐ๊ฐ 2,3,5,7,11์˜ ์ง€์ˆ˜์— ํ•ด๋‹นํ•œ๋‹ค.
ํ˜„์žฌ ๊ตฌํ•˜๋ ค๋Š” ๊ฒƒ์ด a,b,c,d,e ์ด๋ฏ€๋กœ ์ƒˆ๋กœ์šด test case๋ฅผ ์‹คํ–‰ํ•  ๋•Œ์— ๋Œ€๋น„ํ•ด
๊ฐ๊ฐ์„ ๋ชจ๋‘ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๊ณ , 
2,3,4,5,7,11๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ฉด ๊ฐ ํ•ด๋‹น ์ง€์ˆ˜์— 1์„ ๋”ํ•ด์ค€๋‹ค.
๊ทธ๋ฆฌ๊ณ  n์€ ๋‚˜๋ˆ„๊ธฐ๋ฅผ ์‹คํ–‰ํ•œ ํ›„์— ํ•ด๋‹นํ•˜๋Š” ๋ชซ์œผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.
๊ทธ ๋ชซ์ด 1์ด ๋  ๋•Œ๊นŒ์ง€ while๋ฌธ์„ ์‹คํ–‰ํ•œ ํ›„, 
๋ชซ์ด 1์ด๋˜๋ฉด ์ข…๋ฃŒํ•˜๊ณ  ์ถœ๋ ฅํ•œ๋‹ค.