본문 바로가기

T.I.L

23-06-16 T.I.L 프로그래머스 Combination 공식 코드화 하기

 

문제설명

주머니에 있는 구슬을 친구들에게 나누어 준다고 했을 때

중복 없는 경우의 수를 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! 이기 때문에 이것을 코드화 했다. 

알게된 점

학창시절에 수학공식 같은 것이 컴퓨터 작업을 할 때 쓰인다는 막연한 얘기를 들은적이 있었다.

생각해보면 수학공식과 코드의 알고리즘은 일맥상통하는 점이 있다.

이 문제를 풀면서 수학공식 자체의 알고리즘은 잘 모르고 그저 공식만 외우고 있던게 생각났다.

코드는 설계된 메서드가 없거다 모른다면 내가 직접 알고리즘을 설계해야한다.

앞으로 코딩테스트를 할 때 생각없이 메소드를 사용해서 풀지말고 알고리즘을 이해하고 내가 직접 설계해서 푸는 것이 

실력 향상에 더 도움이 될 것 같다고 느꼈다.