인프런 커뮤니티 질문&답변

namk님의 프로필 이미지
namk

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

6-G

x와 hi에 대해

작성

·

296

·

수정됨

0

안녕하세요

이전에도 비슷한 질문이 있었지만 그래도 이해가 잘 가지 않아 질문남깁니다.

 

문제에서

형택이는 앞으로 게임을 다 이긴다

하지만 형택이의 게임 기록은 지울 수 없다

게임 기록은 이렇다

게임 횟수 x : 1~10억

이긴 게임 y : 0~X

이렇게 되면 게임 횟수 x는 여태까지 진행한 게임 횟수이지 앞으로 할 수 있는 게임의 횟수는 아닌 것 아닌가하는 의문이 생깁니다.

강의의 계산식에서도 게임 횟수를 여태까지 진행한 횟수라고 상정하고 초기 z의 계산이 진행되어 있습니다.

고민하는 동안 앞으로 몇 판의 게임을 최대값으로 두고 게임을 진행해야하는지 알 수 없기 때문에 이분탐색으로 계산을 진행할 수 없었습니다.

수학적인 부분이 약해서 수학적으로 선행된 게임의 횟수가 x라면 추가로 x번 진행하면서 x번 전부 승리했을 때 확률이 바뀌지 않는다면 해당 확률은 변할 수 없다라는 식으로 처리되는 것인지는 잘 모르겠네요

 

단순히 x가 최대 10억이기 때문에 hi도 10억까지로 잡는다고 하는 부분이 이해가 잘 가지 않아서 질문글을 남깁니다.

감사합니다.

답변 2

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 namk님 ㅎㅎ

뭔 말인지 알겠습니다.

현재 게임횟수

  • 게임 횟수 : X

라고 할 때 이 X의 범위가 최대 10억인데 어떻게 hi 조차도 10억이냐는 말씀이시죠?

일단, Y의 최소범위를 볼까요? 0입니다. 근데 0이면 어차피 계속해도 안변하니 변하는 수중에서 가장 작은 수는 1입니다. (정수이기 때문)

자 그러면

이렇게 최악의 경우 이렇게 가정할 수 있습니다.

X = 10억

Y = 9.8억입니다.

즉, 입력값은 1000000000 980000000 이 됩니다. 승률은 98%이며 여기서 변한다는 것은 99%로 되는 것을 말합니다.

 

여기서 몇판을 더 이겨야 승률이 변경되는걸까요?

("이제 형택이는 앞으로의 모든 게임에서 지지 않는다."이니까요.)

수식은 다음과 같이 됩니다.

(Y + hi) / (X + hi) != Y / X

여기서 hi가 10억이어야만 변하게 됩니다.

수식으로 나타내면 다음과 같습니다.

(9.8억 + 10억) / (10억 + 10억)

이 때 99%로 승률이 변하게 됩니다. 즉 그래서 hi를 10억으로 설정해야 합니다.

 

 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제가 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

namk님의 프로필 이미지
namk
질문자

이해가 되었습니다 답변 감사합니다 :)

-1

안녕하세요, 인프런 AI 인턴이에요.

형택이가 앞으로 남은 게임도 모두 이긴다는 가정이 주어졌기 때문에 x는 여태까지 진행한 게임 횟수와 앞으로 할 수 있는 게임의 횟수의 합입니다. 따라서 이 문제에서의 x는 현재까지 이긴 게임 횟수와 앞으로 이길 게임 횟수의 합입니다.

처음에 초기값인 z를 계산할 때, 여태까지 이긴 게임횟수를 x라고 상정하고 계산된 값입니다. 따라서 hi도 마찬가지로 x를 기준으로 하여 10억까지로 잡는 것입니다.

이분탐색이 진행되는 동안 추가로 몇 판의 게임이 진행될지 알 수 없기 때문에, 기존에 이긴 게임 수를 기준으로 확률을 계산합니다. 해당 확률은 이후 이긴 게임 횟수가 늘어난다 하더라도 변하지 않게 됩니다.

이해에 도움이 되었길 바랍니다. 감사합니다.

namk님의 프로필 이미지
namk

작성한 질문수

질문하기