-
[Java 자바] 프로그래머스 Lv 0 - 구슬을 나누는 경우의 수Study/Java 2024. 10. 25. 13:27728x90반응형
목차
1. 문제 설명
728x90문제 설명
머쓱이는 구슬을 친구들에게 나누어주려고 합니다.
구슬은 모두 다르게 생겼습니다.
머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때,
balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.제한사항
- 1 ≤ balls ≤ 30
- 1 ≤ share ≤ 30
- 구슬을 고르는 순서는 고려하지 않습니다.
- share ≤ balls
2. 입출력 예시
입출력 예시
#1
서로 다른 구슬 3개 중 2개를 고르는 경우의 수는 3입니다.
#2
서로 다른 구슬 5개 중 3개를 고르는 경우의 수는 10입니다.
3. 문제 풀이
반응형문제 풀이
1. for 문을 사용하여 share의 수만큼 반복한다.
2. answer에 balls에서 i를 뺀 값을 곱하고, i+1 값을 나눈다.
3. 최종 answer를 반환한다.
class Solution { public double solution(int balls, int share) { double answer = 1; for(int i = 0; i < share; i++){ answer *= balls - i; answer /= i+1; } return answer; } }
메모
예)
위에 식을 사용하여 balls = 9, share = 3 일 때,경우의 수 = (9×8×7×...×1) / [(6×5×...×1) × (3×2×1)] = (9×8×7) / (3×2×1)
balls = 30, share = 10 일 때,
경우의 수 = (30×29×28×27×26×25×24×23×22×21) / (10×9×8×7×6×5×4×3×2×1)
이렇게 볼 수 있다.
그래서 위의 문제를 이 형태로 반복문을 만들어 풀었다.
- int : 정수형 / 메모리크기 4byte / 표현범위 (-2,147,483,648 ~ 2,147,483,647)
- long : 정수형 / 메모리크기 8byte / 표현범위 (-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)
- double : 실수형 / 메모리크기 8byte / 표현범위 (-1.7 X 10^308 ~ 1.7 X 10^308)
소수점이 필요 없기 때문에, long을 사용하는 것이 더 좋을듯하다.
728x90반응형'Study > Java' 카테고리의 다른 글
[Java 자바] 프로그래머스 Lv 0 - 2차원으로 만들기 (1) 2024.10.26 [Java 자바] 프로그래머스 Lv 0 - 점의 위치 구하기 (0) 2024.10.26 [Java 자바] 프로그래머스 Lv 0 - 가위 바위 보 (0) 2024.10.25 [Java 자바] 프로그래머스 Lv 0 - 모스부호 (1) (0) 2024.10.24 [Java 자바] 프로그래머스 Lv 0 - 개미 군단 (0) 2024.10.23