프론트엔드 개발/Algorithm

백준 2480번 javascript

하이고니 2022. 11. 23. 17:26

문제

1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 

  1. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 
  2. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다. 
  3. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.  

예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3×100으로 계산되어 1,300원을 받게 된다.
또 3개의 눈이 2, 2, 2로 주어지면 10,000+2×1,000 으로 계산되어 12,000원을 받게 된다.
3개의 눈이 6, 2, 5로 주어지면 그중 가장 큰 값이 6이므로 6×100으로 계산되어 600원을 상금으로 받게 된다.

3개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성하시오.

입력

첫째 줄에 3개의 눈이 빈칸을 사이에 두고 각각 주어진다. 

예제 입력 1

3 3 6

예제 출력 1

1300

예제 입력 2

2 2 2

예제 출력 2

12000

예제 입력 3

6 2 5

예제 출력 3

600
 

작성 코드 1

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split(' ');
const a = parseInt(input[0]);
const b = parseInt(input[1]);
const c = parseInt(input[2]);

let prize = 0;

if (a === b && b === c) {
    prize = 10000 + 1000 * a;
} else if (a === b && b != c) {
    prize = 1000 + 100 * a;
} else if (a != b && b === c) {
    prize = 1000 + 100 * b;
} else if (a === c && b != c) {
    prize = 1000 + 100 * a;
} else if (a != b && b != c && a != c) {
    if (a > b && a > c) {
        prize = 100 * a;
    } else if (b > a && b > c) {
        prize = 100 * b;
    } else if (c > a && c > b) {
        prize = 100 * c;   
    }
}
    
console.log(prize);

 

작성 코드 2 (Math.max 함수 활용)

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split(' ');
const a = parseInt(input[0]);
const b = parseInt(input[1]);
const c = parseInt(input[2]);

let prize = 0;
let biggest = 0;

if (a === b && b === c) {
    prize = 10000 + 1000 * a;
} else if (a === b && b != c) {
    prize = 1000 + 100 * a;
} else if (a != b && b === c) {
    prize = 1000 + 100 * b;
} else if (a === c && b != c) {
    prize = 1000 + 100 * a;
} else {
    biggest = Math.max(...input); 
    prize = 100 * biggest;
}

    
console.log(prize);

 

피드백

Math.max(); 를 처음으로 사용해봤다.
배열을 입력할 때 Spread 연산자 ...을 사용해야 한다.

 

너무 복잡하게 짠 것 같다. 좀 더 줄일 수 있도록 수정해보자.