※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 26534번 문제인 Goats이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/26534 

 

26534번: Goats

Print, on a single line, a floating-point value representing the probability that the first player wins, rounded and displayed to exactly five decimal places. The value should be printed with one digit before the decimal point and five digits after the dec

www.acmicpc.net

두 사람이 던진 주사위의 눈이 같은 경우는 재경기를 하니 제외하고, 두 사람이 주사위를 던졌을 때 각 주사위의 각 면이 나올 확률은 독립적이므로 단순히 각 사람의 눈이 더 큰 경우의 수를 이용해 계산하는 것으로 문제를 해결할 수 있다.

 

구체적으로, 첫 사람이 두번째 사람보다 더 큰 눈을 던질 경우의 수와 두번째 사람이 첫 사람보다 더 큰 눈을 던질 경우의 수를 반복문을 통해 구하고 이를 이용해 확률을 계산해 문제를 해결하자.

 

만약 두 주사위에 적힌 총 열두개의 눈이 모두 같아 승부가 절대 날 수 없는 경우 0을 출력해주자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;
typedef long double ld;

int A[6], B[6];
int Acnt, Bcnt;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	for (int i = 0; i < 6; i++) cin >> A[i];
	for (int i = 0; i < 6; i++) cin >> B[i];

	for (int i = 0; i < 6; i++) {
		for (int j = 0; j < 6; j++) {
			if (A[i] > B[j]) Acnt++;
			else if (A[i] < B[j]) Bcnt++;
		}
	}

	cout << fixed;
	cout.precision(5);

	if (Acnt + Bcnt) cout << (ld)Acnt / (ld)(Acnt + Bcnt);
	else cout << 0;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 26509 // C++] Triangle  (0) 2022.12.21
[BOJ 5356 // C++] Triangles  (0) 2022.12.21
[BOJ 26548 // C++] Quadratics  (0) 2022.12.21
[BOJ 24452 // C++] 交易計画 (Trade Plan)  (0) 2022.12.21
[BOJ 26576 // C++] Date  (0) 2022.12.20

+ Recent posts