티스토리 뷰

 

1072번: 게임

확률이 변하는 지점을 찾기 위해 수학적으로 접근하였다.

1. 승률이 99%, 100%인 경우는 승률이 변하지 않는다.🙅‍♂️

long Z = Y*100 / X;
if(Z>=99){
  return -1;
}

2. 원하는 승률을 얻기 위한 odds를 구한다.👨‍🏫

long wantZ = Z + 1;
double odds= (double)(wantZ*X - (long)100*Y)/(double)((long)100-wantZ);
answer = (int)Math.ceil(odds);

100 * ( (이긴횟수) + (이길횟수) ) / ( (게임횟수) + (이길횟수) ) = 승률(wantZ)

위에 있는 수식을 이용하여 이길횟수를 구한다.

이길횟수를 올림(ceil)해주면 정답을 구할 수 있다.

🔔주의사항

1. 범위 ❗

X는 1,000,000,000보다 작거나 같은 자연수이므로 long으로 선언해줘야 한다.

2. 타입 ❗

사칙연산을 수행할 때 타입을 고려해야 한다.

double odds= (double)(wantZ*X - (long)100*Y)/(double)((long)100-wantZ);

[예시] 100 * Y 인 경우

  • 100이 Integer이므로 100 * Y를 할 경우, 결과가 Integer로 나와 오버플로우날 수 있다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함