ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • BOJ) 조약돌 꺼내기
    알고리즘/백준 2020. 6. 13. 20:15
    반응형

    조약돌 꺼내기

     

    13251번: 조약돌 꺼내기

    첫째 줄에 뽑은 조약돌이 모두 같은 색일 확률을 출력한다. 정답과의 절대/상대 오차는 10-9까지 허용한다.

    www.acmicpc.net

    풀이

     

    단순한 확률 계산 문제였다.

    복잡한 수식이 들어가지도 않았고, 예외 처리에 크게 신경써야하는 문제도 아니었기 때문에 간단하게 요약하겠다.

     

    입력 값을 int형 배열에 담으면서, 전체 갯수를 세준다.

    이후, 저장된 배열을 돌면서 k개를 뽑을 수 있을만큼 충분하다면, 확률을 구해 답에 더해준다.

     

    12개에서 5개를 연속으로 뽑는다면, 그 확률은 5/12 * 4/11 * 3/10 * 2/9 *1/8 이 된다.

    연속으로 뽑는 확률을 모두 더해 답을 리턴한다.

     

    코드

     

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.StringTokenizer;
    
    public class Shingle_13251 {
        public static void main(String[] args) throws IOException {
            solution(new BufferedReader(new InputStreamReader(System.in)));
        }
    
        private static void solution(BufferedReader br) throws IOException {
            int M = Integer.parseInt(br.readLine());
            int[] shingleArr = new int[M];
            StringTokenizer st = new StringTokenizer(br.readLine());
            int total =0;
    
            for(int i=0; i<M; i++) {
                int num = Integer.parseInt(st.nextToken());
                shingleArr[i] = num;
                total += num;
            }
    
            int K = Integer.parseInt(br.readLine());
            br.close();
    
            printResult(M,shingleArr,K,total);
        }
    
        private static void printResult(int M, int[] shingleArr, int K, int total) {
            double result = 0.0;
            for(int i=0; i<M; i++) {
                // 조약돌 어레이를 돌면서 total까지
                double ratio = 1.0;
                if(shingleArr[i] >= K) { // 뽑을 갯수 이상이어야 확률이 나오기 때문에
                    for(int j=0; j<K; j++) {
                        ratio *= (shingleArr[i]-j)/(double)(total-j);
                    }
                    result+=ratio;
                }
            }
            System.out.println(result);
        }
    }
    
    반응형

    '알고리즘 > 백준' 카테고리의 다른 글

    BOJ) 다음수  (0) 2020.06.13
    BOJ) 빗물  (0) 2020.06.13
    BOJ) 귀여운 수~ε٩(๑> ₃ <)۶з  (0) 2020.06.12
    BOJ) 백조의 호수  (207) 2020.06.12
    BOJ) 연속합  (0) 2020.06.12

    댓글

Designed by Tistory.