-
[Java 자바] 프로그래머스 Lv 0 - 구슬을 나누는 경우의 수Study/Java 2024. 10. 25. 13:27728x90반응형
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr
목차
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