[백준 알고리즘] Node.js 2303. 숫자 게임
2023. 12. 21. 11:35ㆍ카테고리 없음
1. 문제
https://www.acmicpc.net/problem/2303
2303번: 숫자 게임
N명이 모여 숫자 게임을 하고자 한다. 각 사람에게는 1부터 10사이의 수가 적혀진 다섯 장의 카드가 주어진다. 그 중 세 장의 카드를 골라 합을 구한 후 일의 자리 수가 가장 큰 사람이 게임을 이
www.acmicpc.net
2. 풀이
- 문제는 세 장의 카드를 골라 일의 자리수가 가장 큰 사람이 이기는 게임이다.
- 만약 일의 자리 수가 가장 큰 사람이 여러 명일 경우, 번호가 큰 사람을 출력하면 된다.
const [N, ...inputs] = require('fs').readFileSync('/dev/stdin')
.toString().trim().split("\n");
// 사람마다 가장 큰 일의 자릿수를 구하는 함수.
const findMaxVal = (array) => {
const cards = array.split(" ").map(v => +v);
const values = [];
for(let i = 0; i < 3; i++){
for(let j = i+1; j < 4; j++){
for(let k = j+1; k < 5; k++){
values.push(cards[i] + cards[j] + cards[k]);
}
}
}
const filtering = values.map(value => {
const splits = value.toString().split("");
return +splits[splits.length - 1]
})
// 위의 filtering은 아래와 같이 작성도 가능.
// const filtering = values.map(value => value % 10)
return Math.max(...filtering);
}
const findAns = () => {
const values = []; // 사람마다 가장 큰 일의 자릿수를 담을 배열 변수.
for(let i = 0; i < +N; i++){
values.push(findMaxVal(inputs[i]))
}
let maxVal = -1; // 가장 큰 값을 담을 변수
let maxIdx = -1; // 가장 큰 값을 가진 사람의 번호를 담을 변수.
for(let i = 0; i < +N; i++){
if(maxVal <= values[i]){
maxVal = values[i];
maxIdx = i+1;
}
}
console.log(maxIdx)
}
findAns();
3. 정리
- 첨엔 동일할 경우를 완전히 제외하고 작성해서 틀렸었다. 문제 좀 잘 읽고 풀도록 하자~