https://www.acmicpc.net/problem/2480
2480번 주사위 세개
문제
- 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개의 눈이 빈칸을 사이에 두고 각각 주어진다.
- 첫째 줄에 게임의 상금을 출력 한다.
풀이
const fs = require('fs');
const inputData = fs.readFileSync(0,'utf8').toString().split(" "); //띄어쓰기로 나누기
let ABC = [parseInt(inputData[0]),parseInt(inputData[1]),parseInt(inputData[2])];
ABC.sort(); //sort로 오름차순으로 정렬!
const A = ABC[0];
const B = ABC[1];
const C = ABC[2];
if (A == B && B ==C){ // 세 숫자가 같으면
result1 = 10000+A*1000
console.log(result1);
} else if (A===B || B ===C ){ // 정렬을 해놨기 때문에 경우의 수가 두가지.
if (A ===B){
console.log(1000+A*100);
} else if( B ===C ){
console.log(1000+B*100);
}
} else if(A !== B && B !== C){ //세 숫자가 각기 다르면
console.log(C*100); //정렬을 통해 C가 젤 큰 숫자 임으로 C*100
}
- 먼저 sort를 이용해 정렬한 후 if문으로 조건을 나눈다.
아쉬운 점
- let ABC = [parseInt(inputData[0]),parseInt(inputData[1]),parseInt(inputData[2])];
이 부분을 더욱 간단하게 만들고 싶은데 +사용하는 법 말고 parseInt로 묶는 방법이 있는지 모르겠다.
- return을 배웠는데 어떻게 활용해야 하는지 모르겠다. return에 대해 더 공부할 것.
- 처음에 "A==B==C" 말도 안되는 조건을 완성해놓고 왜 안되는지 한참을 헤맸다. AND, OR 연산자를 공부해놓고... 거기서 헤매다니.. 나중에 고치고 나서 벙쩌있었다. 잊지 말자!
간단한 문제일수도 있지만, 정렬을 생각하고 조건문을 만드는데 시간을 많이 소요했다. 제출하고 한번에 맞았을때 너무 기뻤다. 아직 문제를 풀기에 너무 부족한 실력이지만 점차 성장하길!!
'algorithm > 백준' 카테고리의 다른 글
[JS] 10926번 ??! (0) | 2022.08.12 |
---|---|
[JS] 10869 사칙연산 (0) | 2022.08.12 |
[JS] 1000 1001 10998 1008번 입출력방식/사칙연산 (0) | 2022.08.12 |
[JS] 2525번 오븐 시계 (1) | 2022.08.11 |
[JS]2884번 알람시계 (0) | 2022.08.10 |
댓글