머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.
생각한 풀이
1. 순서없이 balls에서 share개 만큼 뽑는 경우의 수 구하면 끝
class Solution {
public int solution(int balls, int share) {
long answer = 1;
for(int i=0; i<share; i++){
answer*=(balls - i);
answer/=(i+1);
}
return (int)answer;
}
}
🐴 풀이
1. long 타입으로 answer를 만든다
2. i=0부터 share까지 곱해주고, 분모는 (i+1)로 나눈다
3. long타입으로 받은 answer를 int로 변형해 출력
아래는 내가 처음 작성한 코드인데 왜 안돌아가는지 잘모르겠다
class Solution {
public int solution(int balls, int share) {
long answer =0;
long num = balls-share;
long mul=1;
long div=1;
for(int i=share;i<=balls;i++){
mul*=i;
}
for(int i=1;i<=share;i++){
div*=i;
}
answer=mul/div;
return (int)answer;
}
}
타입 문제인가?
for문 내부에서 곱셈 연산시 long 타입을 벗어나서 오류가 났다. for문 하나로 분모 분자 연산을 한번에 하면 해결(25.01.18)
Today's Quote
磨斧作針(마부작침)