Lv.0 : 주사위 게임 3 [JavaScript]

2024. 8. 20. 21:27Algorithm/프로그래머스

반응형

https://school.programmers.co.kr/learn/courses/30/lessons/181916

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 풀이

function solution(a, b, c, d) {
    var answer = 0;
    var set = new Set([a, b, c, d]);
    var temp = [a, b, c, d].sort((a, b)=> a-b); 
    
    if(set.size == 1){
        // 네 주사위에서 나온 숫자가 모두 p로 같다
        answer = 1111 * a;
    }else if(set.size == 2){
        // 주사위가 두 개씩 같은 값 
        if(temp[0] == temp[1] && temp[2] == temp[3]){
            answer = (temp[0] + temp[2]) * Math.abs(temp[0] - temp[2]);         
        }
        // 세 주사위에서 나온 숫자가 p로 같고 나머지 다른 주사위에서 나온 숫자가 q
        else{
            answer = temp[0] == temp[1] && temp[1] == temp[2] ? Math.pow(10 * temp[0] + temp[3], 2) : Math.pow(10 * temp[3] + temp[0], 2);
        }
    }else if(set.size == 3){
        // 어느 두 주사위에서 나온 숫자가 p로 같고 나머지 두 주사위에서 나온 숫자가 각각 p와 다른 q, r     
        answer = temp[0] == temp[1] ? temp[2] * temp[3] : temp[1] == temp[2] ? temp[0] * temp[3] : temp[0] * temp[1];
    }else{
       // 네 주사위에 적힌 숫자가 모두 다르다
        answer = temp[0];
    }
    
    return answer;
}

 

if문으로 모든 경우의 수를 나눈 뒤

set에 a, b, c, d를 넣어 겹치는 숫자가 몇 개 인지 확인하고

a, b, c, d를 정렬한 temp 배열로 겹치는 숫자를 판단하여 answer를 계산

 

 

반응형