๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ/๐™‹๐™ง๐™ค๐™œ๐™ง๐™–๐™ข๐™ข๐™š๐™ง๐™จ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค '์†Œ์ธ์ˆ˜๋ถ„ํ•ด' ํŒŒ์ด์ฌ ํ’€์ด

by beomcoder 2023. 2. 16.
728x90
๋ฐ˜์‘ํ˜•
 

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

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

"""
์†Œ์ธ์ˆ˜๋ถ„ํ•ด๋ž€ ์–ด๋–ค ์ˆ˜๋ฅผ ์†Œ์ˆ˜๋“ค์˜ ๊ณฑ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 
์˜ˆ๋ฅผ ๋“ค์–ด 12๋ฅผ ์†Œ์ธ์ˆ˜ ๋ถ„ํ•ดํ•˜๋ฉด 2 * 2 * 3 ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
๋”ฐ๋ผ์„œ 12์˜ ์†Œ์ธ์ˆ˜๋Š” 2์™€ 3์ž…๋‹ˆ๋‹ค. ์ž์—ฐ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ 
n์˜ ์†Œ์ธ์ˆ˜๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋‹ด์€ ๋ฐฐ์—ด์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.
"""

def solution(n):
    result = []
    divide_num = 2
    while n!=1:
        if n%divide_num == 0:
            n/= divide_num
            result.append(divide_num)
        else:
            divide_num += 1
        
    return sorted(set(result))
 
 """
 ๋‚˜๋ˆ ์„œ 0์ด ๋˜๋ฉด ์•ฝ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์ €์žฅํ•œ๋‹ค๋Š” ์ƒ๊ฐ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์งฐ๋‹ค.
 ์•ฝ์ˆ˜๋ผ๋ฉด result์— ์ถ”๊ฐ€ํ•˜๊ณ  n์„ divide_num์œผ๋กœ ๋‚˜๋ˆ„์—ˆ๋‹ค.
 
 4๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด 2๋กœ ํ•œ๋ฒˆ ๋‚˜๋ˆ„์–ด๋„ 2์ด๊ธฐ ๋•Œ๋ฌธ์—
 ๋”์ด์ƒ divide_num์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง€์ง€ ์•Š์„๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์•ผ ํ•œ๋‹ค.
 
 ์•ฝ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋‹ค์Œ์ˆ˜๋กœ ์ฆ๊ฐ€์‹œ์ผœ์ฃผ์—ˆ๋‹ค.
 
 17์ด๋ผ๋ฉด divide_num์ด ๊ณ„์† else๋กœ ๋“ค์–ด๊ฐ€์„œ ์ฆ๊ฐ€ํ•˜๋‹ค๊ฐ€
 17์— if๋ฌธ์— ๋“ค์–ด๊ฐ€์„œ ๋‚˜๋ˆ„๋ฉด n์ด 1์ด ๋˜์–ด while๋ฌธ์„ ๋น ์ ธ๋‚˜์˜จ๋‹ค.
 
 ๋‹ค ๊ณ„์‚ฐํ•˜๊ณ  ์ค‘๋ณต๋œ ๊ฐ’์„ ๋นผ๊ณ  ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ฆฌํ„ดํ•ด์ค˜์•ผ ํ•œ๋‹ค.
 setํ•จ์ˆ˜๋กœ ์ค‘๋ณต์„ ์ง€์šฐ๊ณ  sorted๋กœ ์†ŒํŠธํ•ด์ฃผ์–ด ๋ฆฌํ„ดํ•ด์คฌ๋‹ค.
 """
728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€