[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ํ์ - ์นดํซ (level.2)
๋ฌธ์ ๋งํฌ
https://programmers.co.kr/learn/courses/30/lessons/42842
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์นดํซ
Leo๋ ์นดํซ์ ์ฌ๋ฌ ๊ฐ๋ค๊ฐ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ค์์๋ ๋ ธ๋์์ผ๋ก ์น ํด์ ธ ์๊ณ ํ ๋๋ฆฌ 1์ค์ ๊ฐ์์ผ๋ก ์น ํด์ ธ ์๋ ๊ฒฉ์ ๋ชจ์ ์นดํซ์ ๋ดค์ต๋๋ค. Leo๋ ์ง์ผ๋ก ๋์์์ ์๊น ๋ณธ ์นดํซ์ ๋ ธ๋์๊ณผ
programmers.co.kr
๋์ ํ์ด
์ผ๋จ brown๊ณผyellow์ ํฉ์ ์ฝ์๋ง ํ๋ณ์ ๊ธธ์ด๊ฐ ๋ ์ ์๋ค๋ ๊ฒ์ ์บ์นํด์ผํ๋ค.
๊ทธ๋ฆฌ๊ณ , ๊ท์น์ ์ดํด๋ณด๋ฉด, ๋ฌธ์ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด yellow๊ฐ brown์ ๋ชจ๋ ๋๋ฌ์์ฌ์์ผ๋ ค๋ฉด ๊ฐ ๋ณ์ -2ํ ๊ฒ๋ค์ ๊ณฑ์ด yellow์ ๊ฐฏ์์ ๊ฐ์์ผํจ์ ์ ์ ์๋ค. ๊ทธ๋๋ก ์๊ฐํ๋๋ก ์ฝ๋๋ฅผ ๊ตฌํํ๋ค.
def solution(brown, yellow):
answer = []
div = [] # ์ฝ์๋ฅผ ๋ฃ์๊ฑฐ์
total = brown + yellow
for i in range(3, total+1):
if total % i == 0:
div.append(i)
for d in div:
n = total //d
if (d-2)*(n-2) == yellow :
answer.append(n)
answer.append(d)
answer.sort(reverse = True)
break
else:
pass
return answer
๋ค๋ฅธ์ฌ๋ํ์ด
https://programmers.co.kr/learn/courses/30/lessons/42842/solution_groups?language=python3
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
def solution(brown, red):
for i in range(1, int(red**(1/2))+1):
if red % i == 0:
if 2*(i + red//i) == brown-4:
return [red//i+2, i+2]
์ฝ๋๊ฐ ์๋นํ ๊ฐ๊ฒฐํ๋ค. ํ์ง๋ง ๋ง์ง๋ง์ ๊ฒฐ๊ตญ +2์ฉ ํด๋์ ๊ฒ์ ๋ณด๋ฉด, ๋์ ๊ฐ์ ๊ท์น์ ์ฐพ์๊ฒ์ ํ์ธํ ์์๋ค. ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด์ ์กฐ๊ธ ๋ ๊ฐ๊ฒฐํ ์ฝ๋๋ฅผ ์งค ์ ์๋๋ก ๋ ธ๋ ฅํด๋ณด์!