n명의 승객이 정확히 n개의 좌석이 있는 비행기에 탑승했다고 가정합니다. 첫 번째 승객이 티켓을 분실하고 무작위로 좌석을 선택하는 경우. 그러나 그 후에 나머지 승객들은 이 작업을 따를 것입니다 -
-
아직 여유가 있는 경우 티켓에 기재된 좌석에 앉으십시오.
-
다른 좌석이 비어 있는 경우 무작위로 선택
그래서 우리는 n번째 사람이 자신의 자리를 잡을 수 있는 확률을 찾아야 합니다. 따라서 입력이 2이면 출력은 0.5가 됩니다. 따라서 두 번째 사람이 두 번째 자리를 얻을 확률은 0.5입니다(첫 번째 사람이 첫 번째 자리를 차지할 때).
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
n이 1이면 1을 반환하고 그렇지 않으면 0.5를 반환합니다.
예시(C++)
더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −
class Solution { public: double nthPersonGetsNthSeat(int n) { if (n == 1) return 1; return 0.5; } };
입력
2
출력
0.50000