프론트엔드 개발/Algorithm
백준 2480번 javascript
하이고니
2022. 11. 23. 17:26
문제
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.
- 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.
- 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.
- 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×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 연산자 ...을 사용해야 한다.
너무 복잡하게 짠 것 같다. 좀 더 줄일 수 있도록 수정해보자.