알고리즘 스터디 7월 4주차 문제3 (USB 꽂기의 미스터리)

문제#

  • 링크로 대체

풀이 및 주저리..

D3의 문제중 정답율이 좀 높아서 하나 풀고 마무리 해야지 라고 시작했다가.. 문제를 이해하는데 시간이 좀 걸렸다. 정말 간단해 보였지만 과거에 확률들을 다 까먹어서 그런지 시간이 좀 걸렸던 것 같다. 처음에 잘 꼽았던 확률을 생각해보면 잘꼽은 확률 * 잘꼽았을때의 성공률이고 두번 뒤집어서 꼽았다는 것은 처음 뒤집었을때 꽃히지 않은 상태인 1*p*(1-q)가 되고 그다음 q의 확률로 꼽히니 1p\(1-q)*q 가 되는 것이였다. 은근히 도출해내기 어려웠지만 코드는 간단했다.

풀이로 가장 중요한 것은 코드상의 while문 안의 어마어마한 조건식.. 이였던 것 같다. 전체 크기의 안쪽이면서 방향에 따라 처리를 해주기 위해서 조건식이 길어지게 되었고 한쪽방향의 끝까지 가줘야하다보니 좀 지저분해지는 느낌이 있었다. 네방향 처리를 해주는것도 조금 맘에 걸렸지만.. 더 좋은 코드가 생각나질 않아서.. 더 좋은 코드가 생각난다면? 돌아올수도 있다.

코드

package ssafy.swexpert.d3;

import java.util.Scanner;

public class Problem9700 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int iT = sc.nextInt();
        for (int i = 1; i <= iT; i++) {
            double p = sc.nextDouble();
            double q = sc.nextDouble();
            double s1 = (1 - p) * q;
            double s2 = (1 - q) * p * q;

            if (s1 < s2) {
                System.out.println("#" + i + " " + "YES");
            } else
                System.out.println("#" + i + " " + "NO");
        }
    }
}

기억에 남길 것!

  • 수학을 생각해보자
© 2020 JunhoBaik, Built with Gatsby