[백준] 2480번 주사위 세개 - javascript

Chanyoung Lee·2022년 4월 28일
0

백준

목록 보기
5/6

문제

주사위 세개 문제 바로보기

주사위 세개를 던져 나오는 숫자에 따라 아래 세가지 규칙으로 상금을 받는 게임이다.

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

3개 주사위의 눈이 주어질 때 상금을 계산하라고 한다.

고민

if문을 통해 주사위 눈이 모두 같을 때, 두개가 같을 때, 모두 다를 때로 나누어 계산한다.

해결

const fs = require('fs');
const path = require('path');
const filePath = process.platform === 'linux' ? '/dev/stdin' : path.join(__dirname, '/example.txt');
const input = fs.readFileSync(filePath).toString().trim().split('\n');

const dice = input[0].split(' ').map(str => +str);

if (dice[0] === dice[1] && dice[1] === dice[2]) {
  console.log(10000 + dice[0]*1000);
} else if (dice[0] === dice[1] || dice[0] === dice[2] || dice[1] === dice[2]) {
  dice[0] === dice[1] ? console.log(1000 + dice[0]*100) : console.log(1000 + dice[2]*100);
} else {
  console.log(Math.max(...dice)*100);
}

다른이풀이

const [A, B, C] = require("fs")
	.readFileSync("/dev/stdin")
	.toString()
	.trim()
	.split(" ")
	.map((n) => Number(n));

let ans = 0;
if (A === B && B === C) {
	ans = 10000 + A * 1000;
} else if (A === B) {
	ans = 1000 + 100 * A;
} else if (B === C) {
	ans = 1000 + 100 * B;
} else if (A === C) {
	ans = 1000 + 100 * C;
} else {
	ans = 100 * Math.max(A, B, C);
}

console.log(ans);

리뷰

  • 두개의 눈이 같은 경우를 각각 나누어 표현하는게 if의 깊이가 얕고 조금 더 명확해 보인다.
profile
함께 일하는 가치를 아는 사람

0개의 댓글