Algorithm_javascript/2. 조건문

백준 2480번 주사위 세 개 (javascript,node.js)

luminouswy 2023. 5. 11. 14:55
반응형

문제

  • 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

문제풀이

  • 주어진 3개의 주사위가 모두 같을 경우
  • 두 개의 주사위만 같을 경우
  • 세 개 모두 다를 경우
  • 위 3가지 조건에 따라 계산해야 함
  • Math.max.apply()를 사용하여 배열에서 가장 큰 값 찾음
// 백준 2480번
// 주사위 3개 비교, 상금 출력

const fs = require("fs");
const file = process.platform === "linux" ? "dev/stdin" : "./text.txt";
const input = fs.readFileSync(file).toString().trim().split(" ");

const a = Number(input[0]);
const b = Number(input[1]);
const c = Number(input[2]);

let result = 0;

// 입력 값 중에 가장 큰 값
const max = parseInt(Math.max.apply(null, input));

// 3개의 수가 모두 같을 경우 계산
if (a == b && b == c) {
  result = 10000 + max * 1000;

  //두개의 수가 같을 경우
} else if (a == b || b == c || a == c) {
  // max 변수를 활용할 경우 같은 값보다 나머지 값이 더 클수 가 있어서 같은 값일 경우만 찾기
  if (a == b) {
    result = 1000 + a * 100;
  } else if (b == c) {
    result = 1000 + b * 100;
  } else {
    result = 1000 + c * 100;
  }
} else {
  // 3개의 수가 모두 다를 경우
  result = max * 100;
}

console.log(result);