시간이 NullNull
[JAVA] [SWEA] 9700. USB 꽂기의 미스터리 본문
정우는 USB 커넥터를 포트에 꽂고 있다. 정확히 꽂기 까지 다음과 같은 과정을 거친다.
- 가장 처음 USB를 꽂을 때, p의 확률로 올바른 면으로 USB를꽂은 것이고 ,
(1 - p)의 확률로는 뒤집어서 USB를 꽂은 것이다.
- 만약 올바른 면으로 USB를 꽂으면 q의 확률로 정상적으로 USB가 꽂히고,
(1 - q)의 확률로는 꽂히지 않는다. USB가 뒤집어져 있다면 절대로 꽂히지 않는다.
- USB를 꽂는 것을 실패하면 USB를 뒤집은 다음 다시 꽂는 것을 시도한다.
이 때, USB를 정확히 i번 뒤집었을 때 USB가 꽂힐 확률을 si 로 나타낸다.
정우는 지금까지 USB를 두 번이나 뒤집어야 USB가 제대로 꽂히는 놀라운 경험을 너무 많이 했고, 이런 상황이 얼마나 많이 일어날 수 있는지 알고 싶다.
이를 위해 p, q가 주어지면 s1< s2인지 아닌지 판별하는 프로그램을 작성하라.
처음에 이게 무슨 멍소리인가 엄청 고민을 했었다.
(항상 느끼는 거지만 그냥 계산하지말고 꽂아라.... 제발...)
사실 엄청 고민하다가 결론을 내보았는데 간단하였다..... 그래서 엄청 허무한 문제였다.
왜 정답률이 높고 D3인지 체감해주게 하는 문제
1. S1의 경우
쉽게 표현하면 첫번째에 못 꽂아서 뒤집어서 꽂았더니 꽂히는 경우이다.
그럴경우 정말 쉽게도 1번 뒤집어서 꼽혔으니 뒤집기 전에는 뒤집어져 있던 상태이다.
그래서 1 * (1-p)
거기다가 뒤집어서 꽂혔으니 q의 확률로 정상적으로 usb가 꽂힌 것이다.
그래서 1*(1-p)*q
2. S2의 경우
마찬가지로 두번 뒤집어서 꽂아야 한다. 그렇다면 생각해보면
처음에 제대로된 면 -> 한번 뒤집음 -> 올바른 면 아님 -> 다시 뒤집음 꼽힘
결론은 맨 처음에는 올바른 면이라는 것으로 1 * p 이다.
첫번째에 올바른 면인 상태에서 꽂히지 않은 상태임으로 1 * p * (1-q)
한번 뒤집었을때 올바른 면이 아니기에 무슨 짓을 하더라고 꽂히지가 않고
두번째 뒤집었을때 q의 확률로 꼽히므로
1 * p * (1-q) * q
그래서 이 S1과 S2를 비교해주면 문제가 풀리는 단순한 문제이다.
전체 소스 코드는 다음과 같다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Solution9700 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for(int t=1; t<=T; ++t) {
String[] str = br.readLine().split(" ");
double p = Double.parseDouble(str[0]);
double q = Double.parseDouble(str[1]);
String result = "YES";
double s1 = (1-p)*q;
double s2 = p*(1-q)*q;
if(s1 >= s2) {
result = "NO";
}
bw.write("#"+t+" "+result+"\n");
}
bw.close();
br.close();
}
}
'알고리즘' 카테고리의 다른 글
[JAVA] [SWEA] 9940. 순열1 (0) | 2020.05.13 |
---|---|
[JAVA] [SWEA] 9480. 민정이와 광직이의 알파벳 공부 (0) | 2020.05.12 |
[JAVA] [SWEA] 9778. 카드 게임 (0) | 2020.05.12 |
[JAVA] [SWEA] 9317. 석찬이의 받아쓰기 (0) | 2020.02.23 |
[JAVA] [SWEA] 8821. 적고 지우기 (0) | 2020.02.23 |