https://school.programmers.co.kr/learn/courses/30/lessons/120840
๋ฌธ์
๋ฌธ์ ์ค๋ช
๋จธ์ฑ์ด๋ ๊ตฌ์ฌ์ ์น๊ตฌ๋ค์๊ฒ ๋๋์ด์ฃผ๋ ค๊ณ ํฉ๋๋ค. ๊ตฌ์ฌ์ ๋ชจ๋ ๋ค๋ฅด๊ฒ ์๊ฒผ์ต๋๋ค. ๋จธ์ฑ์ด๊ฐ ๊ฐ๊ณ ์๋ ๊ตฌ์ฌ์ ๊ฐ์ balls์ ์น๊ตฌ๋ค์๊ฒ ๋๋์ด ์ค ๊ตฌ์ฌ ๊ฐ์ share์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, balls๊ฐ์ ๊ตฌ์ฌ ์ค share๊ฐ์ ๊ตฌ์ฌ์ ๊ณ ๋ฅด๋ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- 1 ≤ balls ≤ 30
- 1 ≤ share ≤ 30
- ๊ตฌ์ฌ์ ๊ณ ๋ฅด๋ ์์๋ ๊ณ ๋ คํ์ง ์์ต๋๋ค.
- share ≤ balls
์ ์ถ๋ ฅ ์
balls | share | result |
3 | 2 | 3 |
5 | 3 | 10 |
์์ค ์ฝ๋
# 1 (๋ฐํ์ ์๋ฌ)
def solution(balls, share):
answer = 1
ball_list = list(range(balls,1,-1))
share_list = list(range(1,share+1))
for idx in range(1,share+1):
answer *= ball_list[idx-1]
answer = int(answer/share_list[idx-1])
return answer
ํ์ด # 1
- ๊ณต์ ๊ฐฏ์์์ 1์ฉ ๋นผ์ ball_list์ ๋ด๊ณ , ๊ณต์ ํ ๊ณต์ ๊ฐฏ์๋ฅผ 1๋ถํฐ 1์ฉ ๋ํด share_list์ ๋ด๊ธฐ
- share ์ซ์ ๋ฒ์์์ ball_list์ ์์๋ ๊ณฑํ๊ณ share_list์ ์์๋ ๋๋๊ธฐ
# 2
def solution(balls, share):
answer = 1
cnt = 0
while cnt < share:
answer *= (balls-cnt)
answer = int(answer/(cnt+1))
cnt += 1
return answer
ํ์ด #2
- cnt๊ฐ share์ ์ซ์๋ณด๋ค ์์๋์ ๊ณฑํ๊ธฐ์ ๋๋๊ธฐ๋ฅผ ์คํ
- balls-cnt๋ฅผ ๊ณฑํ๊ธฐ
- ์์ ์ซ์์์ cnt+1์ ๋๋๊ธฐ
# 3
import math
def solution(balls, share):
return math.comb(balls, share)
ํ์ด #3
- math ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ combination ํจ์ ์ฌ์ฉ
์ฒ์์ ์ซ์๋ฅผ ๊ณฑํ๊ณ ๋๋๋ ๋ฐฉํฅ์ผ๋ก ํ๋ค๊ฐ ์ ์๋๊ธธ๋ ๋ฆฌ์คํธ๋ก ํ์ด๋ดค๋๋ฐ ์ญ์๋ ๋ฐํ์ ์๋ฌ๊ฐ ๋ฌ๋ค. ๊ทธ๋์ ์ซ์๋ฅผ ์กฐ์ํด์ while๋ฌธ์ ๋ฃ์๋๋ ๊ฒฐ๊ณผ๋ ๋์์ง๋ง ๋ญ๊ฐ ๋ ๋น ๋ฅด๊ฒ ๋์์ผ๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ ํ์ด๋ฅผ ๋ณด๋ค๋ณด๋ math ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ combination ํจ์๊ฐ ์์๋ค...๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์ ์ฐ๋๊ฑฐ ์ต๊ณ ...!!
'์ฝ๋ฉ ๋ฌธ์ ํ์ด ๐ป > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.1 ์ซ์ ์ง๊ฟ (0) | 2023.12.15 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.1 ์ฑ๊ฒฉ ์ ํ ๊ฒ์ฌํ๊ธฐ (1) | 2023.12.15 |
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.0 ๊ฒน์น๋ ์ ๋ถ์ ๊ธธ์ด (1) | 2023.12.05 |
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.0 ํน์ดํ ์ ๋ ฌ (1) | 2023.12.05 |
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.0 ์ ์๋ฅผ ๋์ ํ์ผ๋ก ๋ฐฐ์นํ๊ธฐ (0) | 2023.12.05 |