Algorithm/Javascript

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

보라해바라기 2023. 7. 12. 15:45
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