[๋ฌธ์ ๋งํฌ] ๐
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ์ด ๋ฐฉ๋ฒ
๐ก ์ฝ์ ์์ผ๋ก ๋๋น์ ๋์ด ์ฐพ๊ธฐ
1๏ธโฃ ์ ์ฒด ๊ฒฉ์ ์ ๊ณ์ฐ
- total = brown + yellow
2๏ธโฃ ์ฝ์ ์ ์ฐพ๊ธฐ
- total์ ์ฝ์๋ฅผ ์ํํ๋ฉด์ (width, height) ์์ ๊ตฌํ๋ค.
3๏ธโฃ ๋ ธ๋์ ๊ฒฉ์ ์กฐ๊ฑด ํ์ธ
- ๋ ธ๋์ ๊ฒฉ์๋ ๊ฐ์ ํ ๋๋ฆฌ ์์ ์์ด (width - 2) * (height - 2) == yellow๋ฅผ ๋ง์กฑํด์ผ ํ๋ค.
4๏ธโฃ ์ ๋ต ๋ฐํ
- ์กฐ๊ฑด์ ๋ง์กฑํ๋ (width, height) ์์ [width, height] ํํ๋ก ๋ฐํํ๋ค.
Solution
def solution(brown, yellow):
square = brown + yellow
for i in range(1, int(square**0.5) + 1):
if square % i == 0:
width = square // i
height = i
if (width - 2) * (height - 2) == yellow:
return [width, height]
๐ ์ฝ์๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ์นดํซ์ ํฌ๊ธฐ ๊ตฌํ๊ธฐ
- ๊ฐ์๊ณผ ๋ ธ๋์ ๊ฒฉ์์ ํฉ์ ์นดํซ ์ ์ฒด์ ๋์ด๊ฐ ๋๋ฏ๋ก, ์นดํซ์ ๊ฐ๋ก์ ์ธ๋ก ๊ธธ์ด๋ square์ ์ฝ์ ์์ด์ด์ผ ํ๋ค.
- ์๋ฅผ ๋ค์ด, square = width * height์ ๊ฐ์ด ์ ์ฒด ๋์ด๋ฅผ ์ด๋ฃจ๋ ๋ ๊ฐ์ ์ฐพ๋ ๊ฒ์ด ๋ฌธ์ ์ ํต์ฌ์ธ๋ฐ, ์ด๋ฅผ ์ํด square์ ์ฝ์๋ฅผ ์ฐพ์์ ๊ฐ๋ฅํ (width, height) ์์ ๊ตฌํ๋ ๊ฒ์ด ํจ์จ์ ์ด๋ค.
- ์กฐ๊ฑด์ ๋ง๋ ๊ฐ๋ก์ ์ธ๋ก ์ ์ฐพ๊ธฐ
- ๊ฐ๋ก์ ์ธ๋ก ๊ธธ์ด๊ฐ (width - 2) * (height - 2) == yellow ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํ๋ฏ๋ก, ์ฝ์ ์ ์ค์์ ์ด ์กฐ๊ฑด์ ๋ง์กฑํ๋ (width, height)์ ์ฐพ๋ ๊ฒ์ด๋ค.
์ด ๋ฐฉ๋ฒ์ ํตํด ํจ์จ์ ์ผ๋ก ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ๋ก์ ์ธ๋ก ๊ธธ์ด๋ฅผ ๊ตฌํ ์ ์๋ค.
๐ (width - 2) * (height - 2)
์ด ์กฐ๊ฑด์ ๋ ธ๋์ ๊ฒฉ์์ ๊ฐ์๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํ ๊ฒ์ด๋ค. ์นดํซ์ ๊ฐ์ฅ์๋ฆฌ๋ ๊ฐ์ ๊ฒฉ์๋ก ๋๋ฌ์ธ์ฌ ์๊ธฐ ๋๋ฌธ์, ์ ์ฒด ๋๋น์ ๋์ด์์ ์์ชฝ ๊ฐ์ฅ์๋ฆฌ ๊ฐ๊ฐ ํ ์นธ์ฉ์ ์ ์ธํ (width - 2)์ (height - 2) ๊ฐ ๋ ธ๋์ ๊ฒฉ์๊ฐ ๋ฐฐ์น๋ ๊ณต๊ฐ์ ๊ฐ๋ก์ ์ธ๋ก ๊ธธ์ด๊ฐ ๋๋ค.
๐ฉ๐ป ํ๊ณ
์ฒ์์ ๊ฐ์๊ณผ ๋ ธ๋์์ ํฉ์ ์ฝ์ ์์ ๊ตฌํด์ ๋ง์ง๋ง ๊ฐ๋ง ๋ฐํํ์๋ค. ์ด์ ๋ ํฉ์ด 12๋ผ๊ณ ํ์ ๋ 12์ ์ฝ์ [1, 2, 3, 4, 6, 12] ์์ ์ค๊ฐ์ ํด๋นํ๋ [3, 4] ๊ฐ ์ ๋ต๊ณผ ์ผ์นํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ถํ์๋ค.
์ค๋ต
def solution(brown, yellow):
answer = []
square = brown + yellow
for i in range(1, int(square**0.5) + 1):
if square % i == 0 and i == int(square**0.5):
answer.append(square // i)
answer.append(i)
return answer
๊ทธ๋ฌ๋ ์ด ์ฝ๋๋ ์ ์ฌ๊ฐํ์ ๊ฒฝ์ฐ์๋ง ์๋ํ๋ค. i ๊ฐ ๊ฐ๋ก ๋๋ ์ธ๋ก ๊ธธ์ด๊ฐ ๋ ์ ์์ด์ square % i == 0 ์กฐ๊ฑด๋ง์ผ๋ก ์ถฉ๋ถํ๋ค.
'๐งฉ Algorithm > [Programmers] Level 2' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Programmers] L2. ์์ด ๋๋ง์๊ธฐ (Python) (1) | 2024.11.11 |
|---|---|
| [Programmers] L2. ์ ํ์ ์๊ฐ ์ด๋ (Python) (0) | 2024.11.11 |
| [Programmers] L2. ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ (Python) (0) | 2024.11.11 |
| [Programmers] L2. ํผ๋ณด๋์น ์ (Python) (0) | 2024.11.10 |
| [Programmers] L2. ์ด์ง ๋ณํ ๋ฐ๋ณตํ๊ธฐ (Python) (0) | 2024.11.09 |