https://www.acmicpc.net/problem/13987
13987번: Six Sides
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
24/04/06
간단한 확률론 + 사칙 연산 문제입니다. 저의 경우는 무한 등비 급수를 활용하여 해결했습니다.
문제 접근 방식:
문제 해석을 하자면 다음과 같습니다.
두 명의 참가자가 게임을 진행합니다. 각자 6면에 특정 값이 쓰여있는 주사위를 가져옵니다. 이 주사위는 공평한 주사위입니다. 즉, 각 면이 올 확률은 모두 균등합니다. 첫 플레이어가 첫번째 주사위를 던지고 두번째 플레이어는 두번째 주사위를 던집니다. 만약 두 주사위의 값이 다르다면, 더 높은 값이 나온 사람이 이깁니다. 만약 두 주사위의 값이 같다면 두 플레이어는 주사위를 다시 던집니다. 주사위에 적힌 값이 주어질 때, 첫번째 플레이어가 이길 확률을 구하세요.
접근 방법은 다음과 같습니다.
첫 번째 플레이어가 이길 확률은 다음과 같습니다.
$$\textrm{이길 확률 + 비길 확률*이길 확률 + 비길 확률*비길 확률*이길 확률 + }\cdots$$
이길 확률을 $a$, 비길 확률을 $b$라고 하면, 무한 등비 급수의 형태가 됩니다.
즉, 초항은 $a$이고 공비는 $b$인 무한 등비 급수이므로, 이에 대한 값은 $a/(1-b)$입니다.
편의 상 첫 번째 주사위의 면을 $face1$, 두 번째 주사위의 면을 $face2$라고 합시다.
우리는 이길 확률을 구하고 비길 확률을 구해야 합니다.
따라서 $face1 > face2$인 경우의 수를 $p$라고 하고, $face1 = face2$인 경우의 수를 $q$라고 하면, 위의 값을 다음과 같이 변형 시킬 수 있습니다.
$$\frac{p}{36-q}$$
이 값을 구하면 충분합니다.
주어진 양식을 잘 지켜 출력해야 함에 유의합시다.
아래는 내가 위의 접근 방식과 같이 작성한 파이썬 코드이다. 더보기를 누르면 확인할 수 있다.
# 13987번 Six Sides
# 확률론
'''
문제 해석:
두명의 참가자가 게임을 진행합니다.
각자 6면에 특정 값이 쓰여있는 주사위를 가져옵니다.
이 주사위는 공평한 주사위입니다. 즉, 각 면이 올 확률은 모두 균등합니다.
첫 플레이어가 첫번째 주사위를 던지고 두번째 플레이어는 두번째 주사위를 던집니다.
만약 두 주사위의 값이 다르다면, 더 높은 값이 나온 사람이 이깁니다.
만약 두 주사위의 값이 같다면 두 플레이어는 주사위를 다시 던집니다.
주사위에 적힌 값이 주어질 때, 첫번째 플레이어가 이길 확률을 구하세요.
접근 방법:
첫번째 플레이어가 이길 확률 =
이길 확률 + 비길확률*이길확률 + 비길확률*비길확률*이길확률 + ...
이길 확률을 a, 비길 확률을 b라고 하면, 무한 등비급수의 형태가 된다.
초항은 a이고 공비는 b인 무한 등비급수이므로, 이에 대한 값은
a / (1-b)이다.
전체 경우의 수는 36개이고, face1 > face2인 경우를 p, face1 == face2인 경우를 q
라고 한다면, 이 값은 다음과 같이 변형될 수 있다.
p / 36-q
'''
first_die = list(map(int, input().split()))
second_die = list(map(int, input().split()))
p, q = 0, 0
for i in range(6):
for j in range(6):
if first_die[i] > second_die[j]:
p += 1
elif first_die[i] == second_die[j]:
q += 1
print(f'{round(p/(36-q), 5):.5f}')
'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글
[Python] 31532번 선형 회귀는 너무 쉬워 3 (0) | 2024.04.18 |
---|---|
[Python] 31478번 포니 양은 놀고 싶어! (0) | 2024.04.16 |
[Python] 2357번 최솟값과 최댓값 (추후 보강 예정) (0) | 2024.03.28 |
[Python] 19240번 장난감 동맹군 (0) | 2024.03.27 |
[Python] 2682번 최대 사이클 1 (0) | 2024.03.27 |