[프로그래머스] 230712 코딩테스트 연습

    SMALL

    1. 간단한 논리연산

    // 조건부 연산: AND(&&), OR(||)
    
    function solution(x1, x2, x3, x4) {
        var answer = true;
        
        var res1 = (x1 || x2)
        var res2 = (x3 || x4)
        answer = (res1 && res2)
        
        return answer;
    }

     

    2. 주사위 게임 3

    // case1: 1111 * p
    // case2: Math.pow((10*p+q), 2)
    // case3: (p+q) * Math.sqrt( Math.pow((p-q), 2) )
    // case4: q*r
    // case5: Math.min(a, b, c, d)
    // ** Math.pow(n, m) -> n의 m승
    // ** Math.sqrt(n) -> n의 제곱근
    // ** Math.min() -> 최소값 구하기
    
    function solution(a, b, c, d) {
        var answer = 0;
    
        if (a==b) {
            if (a==c) {
                if (a==d) {
                    // case 1
                    answer = 1111 * a 
                } else { // (a != d)
                    // case 2
                    answer = Math.pow((10*a+d), 2) 
                }
            } else { // (a != c)
                if (a==d) {
                    //case 2
                    answer = Math.pow((10*a+c), 2) 
                } else { // (a != d)
                    if (c==d) {
                        //case 3
                        answer = (a+c) * Math.sqrt(Math.pow((a-c), 2))
                    } else { // (c != d)
                        //case 4
                        answer = c*d 
                    }
                }
            }
        } else { // (a != b)
            if (a==c) {
                if (a==d) {
                    // case 2
                    answer = Math.pow((10*a+b), 2) 
                } else { // (a != d)
                    if (b==d) { 
                        //case 3 
                        answer = (a+b) * Math.sqrt(Math.pow((a-b), 2))   
                    } else { // (b != d)
                        //case 4
                        answer = b*d 
                    }
                }
            } else { // (a != c)
                if (a==d) {
                    if (b==c) {
                        //case 3
                        answer = (a+b) * Math.sqrt(Math.pow((a-b), 2))
                    } else { // (b != c)
                        //case 4
                        answer = b*c 
                    }
                } else { // (a != d)
                    if (b==c) {
                        if (b==d) {
                            // case 2
                            answer = Math.pow((10*b+a), 2)
                        } else { // (b != d)
                            // case 4
                            answer = a*d
                        }
                    } else { // (b != c)
                        if (b==d) {
                           //case 4
                           answer = a*c
                        } else { // (b != d)
                            if (c==d) {
                                //case 4
                               answer = a*b; 
                            } else { // (c != d)
                                //case 5
                                answer = Math.min(a, b, c, d); 
                            }
                        }
                    }
                }
            }
        }
        
        return answer;
    }

    [로직]

    1. a==b일 때
    (1) a==b > a==c > a==d : case1
    (2) a==b > a==c > a!=d : case2 (다른 값 d)
    (3) a==b > a!=c > a==d : case2 (다른 값 c)
    (4) a==b > a!=c > a!=d (무조건 b!=c, b!=d 성립) > c==d : case3 (a, c) 
    (5) a==b > a!=c > a!=d (무조건 b!=c, b!=d 성립) > c!=d : case4 (c, d) 

    2. a!=b일 때
    (1) a!=b > a==c > a==d : case2 (다른 값 b)
    (2) a!=b > a==c > a!=d (무조건 b!=c 성립) > b==d : case3 (a,b) 
    (3) a!=b > a==c > a!=d (무조건 b!=c 성립) > b!=d : case4 (b,d) 
    (4) a!=b > a!=c > a==d > b==c : case3 (a,b)
    (5) a!=b > a!=c > a==d > b!=c : case4 (b,c)
    (6) a!=b > a!=c > a==d > b==c > b==d > c==d : case2 (다른 값 a)
    (7) a!=b > a!=c > a==d > b==c > b!=d > c!=d : case4 (a,d)
    (8) a!=b > a!=c > a==d > b!=c > b==d > c!=d : case4 (a,c) 
    (9) a!=b > a!=c > a==d > b!=c > b!==d > c==d : case4 (a,b)
    (10) a!=b > a!=c > a==d > b!=c > b!==d > c!=d : case5

    728x90

    댓글