세 명의 플레이어 A, B, C가 주사위를 던진다고 가정해 봅시다. 이때 C가 주사위를 던져 나온 숫자가 A와 B의 숫자보다 모두 클 확률을 구하는 것이 목표입니다.
더 높은 값이 나올 확률을 확인하려면, 세 번째 주사위의 값이 앞의 두 값보다 커야 한다는 점을 항상 염두에 두어야 합니다.
예를 들어 A가 주사위를 던져 2가 나오고, B가 던져 3이 나왔다면, C가 더 높은 값을 얻을 확률은 3/6 = 1/2입니다. 왜냐하면 A와 B보다 큰 값은 4, 5, 6뿐이기 때문입니다. 이를 기약분수로 약분하면 확률은 1/2가 됩니다.
따라서 최종 결과는 반드시 기약분수 형태로 약분하여 출력해야 합니다.
입력 예시
A = 3, B = 5
출력
1/6
설명
3과 5보다 동시에 큰 값은 6뿐이므로, 확률은 1/6입니다.
입력 예시
A = 2, B = 4
출력
1/3
설명
2와 4보다 모두 큰 값은 5와 6으로, 확률은 2/6입니다. 이를 약분하면 1/3이 됩니다.
문제 해결 접근 방법
- A와 B 중에서 최댓값을 찾습니다.
- 6에서 A와 B의 최댓값을 뺀 후, 그 값과 6의 최대공약수(GCD)를 계산합니다.
- 계산된 결과를 반환합니다.
알고리즘
Start
Step 1→ 세 번째 주사위에서 더 높은 값이 나올 확률 계산
void probab_third(int a, int b)
declare int c = 6 - max(a, b)
declare int GCD = __gcd(c, 6)
Print GCD
Step 2→ In main()
Declare int a = 2, b = 2
Call probab_third(a, b)
Stop구현 예제 코드
#include <bits/stdc++.h>
using namespace std;
// 세 번째 주사위에서 더 높은 값이 나올 확률
void probab_third(int a, int b){
int c = 6 - max(a, b);
int GCD = __gcd(c, 6);
cout<<"probability of getting more value in third dice : " <<c / GCD << "/" << 6 / GCD;
}
int main(){
int a = 2, b = 2;
probab_third(a, b);
return 0;
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
probability of getting more value in third dice : 2/3