현재

[AtcoderBeginnerContest][242][A]T-shirt 본문

알고리즘/기타알고리즘문제

[AtcoderBeginnerContest][242][A]T-shirt

AAAge 2023. 9. 3. 13:32

<코드>

import java.util.*;

public class ABC_242_A_Tshirt {
    public static void main (String []args){
        Scanner scn = new Scanner(System.in);
        // 일단 가정하고 ㄱㄱ
        double A = scn.nextInt();
        double B = scn.nextInt();
        double C = scn.nextInt();
        int iroha = scn.nextInt();

        if ( iroha <= A ){
 //           System.out.println("받음");
            double probability = 1;
            System.out.println(probability);
        }else if ( iroha > A && iroha <= B){
//            System.out.println("확률적으로 받음"); // 받을 확률 (B - ( A )) / c
            double probability = ( C / (B - ( A )));
            System.out.println(probability);
        }else{
//            System.out.println("받지 못함ㅋ");
            double probability = 0;
            System.out.println(probability);

        }

    }
}

// 어떤 프로그래밍 대회에서 아래의 룰을 따라서 참가자에게 티셔츠를줍니다.
// 상위 A위 까지의 참가자는, 반드시 T셔츠를 받을 수 있습니다.
// 게다가, 상위 A+1위까지 B위 까지의 참가자 C명이 랜덤으로 선발되
// 동일한 T 셔츠를 받습니다. 1000명의 참가자가 있습니다
// 참가자로 있는 이로하짱은 X위를 하였스니다. 이때
// 이로하 짱이 티셔츠를 받을 수 있는 확률을 구해주세요.

<문제풀이>

일단 문제를 제대로 이해 하는게 중요하다. 처음에는 나도 무슨 소린지 몰라서 해맸는데 문제를 이해하고 조건만 제대로 세운 다면 크게 어려움은 없는 문제였다.

일단 X가 A보다 작거나 같으면 무조건 셔츠를 받을 수 있으므로 확률은 1이다.

그리고 X가 B보다 높으면 무조건 셔츠를 받을 수 없으므로 확률은 0이다.

그러므로  (C / (B - ( A )) 의 확률만 구해줘야 한다. 단, 주의할점은 int로 받게되면 몫이 1미만일때는 전부 0으로 처리되니

double로 받았다.(float보다 double이 정확도가 높으므로 double로 받음).

<문제출처>

https://atcoder.jp/contests/abc242/tasks/abc242_a 

 

A - T-shirt

AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.

atcoder.jp