아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

PCR 검사 풀링

면접 대비

시간 제한1초메모리 제한1024 MB

요약
한 사람이 양성일 확률 p가 주어졌을 때, 사람 한 명당 검사 횟수의 기댓값이 가장 작은 풀 크기 N(2에서 16 사이)을 구합니다. 그런 N이 없으면 1을 출력합니다.
난이도

쉬움10점 중 2점

유형
수학, 완전 탐색
정답자
아직 제출이 없습니다

문제

PCR(중합효소 연쇄 반응) 검사는 DNA 시료를 반복해서 복제한 뒤, COVID에 특이적인 DNA 조각이 있는지 확인하는 검사이다. 시간이 오래 걸리고 필요한 시약의 양도 제한되어 있을 수 있다. 처리량을 높이는 방법 가운데 하나가 시료를 모아서 검사하는 풀링이다.

핵심 아이디어는 N명의 시료를 섞고, 섞은 시료에 PCR 검사를 한 번 하는 것이다. 검사 결과가 음성이면 추가 검사는 필요 없다. 양성이면 N명 모두를 개별적으로 다시 검사해야 한다. 양성일 확률이 낮으면 필요한 검사 횟수가 크게 줄어든다.

한 사람이 양성일 확률 p를 입력받아, 함께 섞을 시료의 최적 개수 N을 출력하는 프로그램을 작성하라.

N명 모두가 음성일 확률을 P라고 하면, 필요한 검사 횟수의 기댓값 E(T)는 다음과 같다.

E(T)=1⋅P+N⋅(1−P)E(T) = 1 \cdot P + N \cdot (1 - P)

E(T) / N이 최소가 되도록 N을 고른다.

예를 들어 N이 2이고 p가 0.5이면 P는 0.25이고, E(T)=0.25+2⋅0.75=1.75E(T) = 0.25 + 2 \cdot 0.75 = 1.75이다. 이는 N보다 조금 작을 뿐이다.

각 사람의 시료가 충분하다는 것을 보장하려면 N은 16을 넘을 수 없다.

입력

입력은 한 줄로 이루어지며, 0 < p < 1을 만족하는 실수 p가 주어진다. p는 한 사람이 COVID 양성 판정을 받을 확률이다.

PCR 검사 풀링

출력은 한 줄이며, 하나의 10진수 정수를 출력한다. 모든 N에 대해 E(T)≥NE(T) \geq N이면 1을 출력한다. 그렇지 않은 경우에는 E(T) / N을 최소로 만드는 N의 값을 출력하며, 이때 2≤N≤162 \leq N \leq 16이다.

예제3

  1. 예제 1

    입력
    0.1
    
    예상 출력
    4
    
  2. 예제 2

    입력
    0.02
    
    예상 출력
    8
    
  3. 예제 3

    입력
    0.01
    
    예상 출력
    10