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

Developer/๐ŸŸ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/python] N๊ฐœ์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

N๊ฐœ์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

https://programmers.co.kr/learn/courses/30/lessons/12953

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - N๊ฐœ์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

๋‘ ์ˆ˜์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(Least Common Multiple)๋ž€ ์ž…๋ ฅ๋œ ๋‘ ์ˆ˜์˜ ๋ฐฐ์ˆ˜ ์ค‘ ๊ณตํ†ต์ด ๋˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 2์™€ 7์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” 14๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ •์˜๋ฅผ ํ™•์žฅํ•ด์„œ, n๊ฐœ์˜ ์ˆ˜์˜ ์ตœ์†Œ๊ณต๋ฐฐ๏ฟฝ๏ฟฝ

programmers.co.kr


๋ฌธ์ œ ์„ค๋ช…

๋‘ ์ˆ˜์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(Least Common Multiple)๋ž€ ์ž…๋ ฅ๋œ ๋‘ ์ˆ˜์˜ ๋ฐฐ์ˆ˜ ์ค‘ ๊ณตํ†ต์ด ๋˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด 2์™€ 7์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” 14๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ •์˜๋ฅผ ํ™•์žฅํ•ด์„œ, n๊ฐœ์˜ ์ˆ˜์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” n ๊ฐœ์˜ ์ˆ˜๋“ค์˜ ๋ฐฐ์ˆ˜ ์ค‘ ๊ณตํ†ต์ด ๋˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

 

n๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด arr์ด ์ž…๋ ฅ๋˜์—ˆ์„ ๋•Œ ์ด ์ˆ˜๋“ค์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

 


ํ’€์ด

์ง€์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ–ˆ์Šต๋‹ˆ๋‹ค.

 

def solution(li):
	y = [2,3,5,7]
	root = {'2':0, '3':0, '5':0, '7':0}
	answer = 1

	for i in range(len(li)):
		j = 0
		r = li[i]

		mt = {v:0 for v in root.keys()}

		while 1:
			if r % y[j] == 0:
				r = r / y[j]
				mt[str(y[j])] += 1
				j = -1

			if j == len(y)-1:
				break

			j += 1

		if r != 1 :                     # 2,3,5,7 ์„ ์ œ์™ธํ•œ ์†Œ์ˆ˜๊ฐ€ ๋‚˜์˜ฌ ๋•Œ
			root[str(int(r))] = 0
			mt[str(int(r))] = 1
			y.append(int(r))


		for w in range(len(root)):
			if root[str(y[w])] < mt[str(y[w])]:
				root[str(y[w])] = mt[str(y[w])]
				
	for v,k  in root.items():
		answer *= (int(v)**k)
		
	return int(answer)

 


์‚ฌ์šฉ๋œ ๊ฐœ๋…

* ๋”•์…”๋„ˆ๋ฆฌ

 

* ์ œ๊ณฑ ๊ตฌํ•˜๊ธฐ