문제설명
주머니에 있는 구슬을 친구들에게 나누어 준다고 했을 때
중복 없는 경우의 수를 return하시오
시도
학창시절에 배웠던 경우의 수의 공식이 바로 생각났다. 그것을 코드화 하면 문제가 풀리겠다는 생각이 들었다.
해결
function solution(balls, share) {
var answer = 0;
let ball=1
let she=1
for(let i=0;i<share;i++){
ball*=(balls-i)
}
for(let i=0;i<share;i++){
she*=(share-i)
}
answer=ball/she
return answer;
}
중복이 없는 경우의 수 공식은 nCr 이라는 Combination 공식이다.
즉 중복없는 뽑기의 경우의 공식이란 n=전체의 수/ r= 뽑는 횟수
n(n-1)..(n-r)/r! 이기 때문에 이것을 코드화 했다.
알게된 점
학창시절에 수학공식 같은 것이 컴퓨터 작업을 할 때 쓰인다는 막연한 얘기를 들은적이 있었다.
생각해보면 수학공식과 코드의 알고리즘은 일맥상통하는 점이 있다.
이 문제를 풀면서 수학공식 자체의 알고리즘은 잘 모르고 그저 공식만 외우고 있던게 생각났다.
코드는 설계된 메서드가 없거다 모른다면 내가 직접 알고리즘을 설계해야한다.
앞으로 코딩테스트를 할 때 생각없이 메소드를 사용해서 풀지말고 알고리즘을 이해하고 내가 직접 설계해서 푸는 것이
실력 향상에 더 도움이 될 것 같다고 느꼈다.
'T.I.L' 카테고리의 다른 글
23-06-21 T.I.L JWT 토큰의 undefinde (0) | 2023.06.22 |
---|---|
23-06-19 T.I.L mongodb 6.0 이상 window에 설치하기 (0) | 2023.06.19 |
23-06-14 T.I.L E11000 duplicate key error collection (0) | 2023.06.14 |
23-06-07 T.I.L filter와 find (0) | 2023.06.07 |
23-06-06 T.I.L innerHTML과 map (0) | 2023.06.06 |