const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const uniqueNumbers = [];
const numbers = input.map((num) => num % 42);
for (let i = 0; i < numbers.length; i++) {
if (uniqueNumbers.indexOf(numbers[i]) === -1) {
uniqueNumbers.push(numbers[i]);
}
}
console.log(uniqueNumbers.length);
Array.prototype.includes(), Array.prototype.indexOf()
두 메소드 중에 어떤 것을 쓰는게 좋을까? => 참고
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const count = parseInt(input[0]);
const grades = input[1].split(' ').map((num) => parseInt(num));
let max = grades[0];
for (let i = 1; i < grades.length; i++) {
if (grades[i] > max) max = grades[i];
}
const sum = grades.reduce((acc, cur) => {
return acc + cur;
}, 0);
const arg = sum / count;
console.log((arg / max) * 100);
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const getSum = function (n) {
return (n * (n + 1)) / 2;
};
const count = Number(input[0]);
let result = '';
for (let i = 1; i <= count; i++) {
let sum = 0;
// 1.
const splitedArray = input[i].split('X').filter((v) => !!v);
splitedArray.forEach((str) => {
sum = sum + getSum(str.length);
});
if (i !== 1) {
result += '\n';
}
result += sum.toString();
}
console.log(result);
문제 풀이에 대한 아이디어가 떠올라서 쉽게 풀 수 있었다.
1번 라인에서 각 입력을 'X'를 기준으로 나누고,filter
를 통해 빈 문자열을 제거한다. 그러면 'O'만으로 이루어진 문자열을 갖는 배열을 만들 수 있다.
구하고자 하는 값은 연속된 'O'에 따른 점수이다.
'OO'일 경우 점수는 1 + 2, 'OOO'일 경우 점수는 1 + 2 + 3이다. 즉, "1부터 문자열의 길이까지의 합"을 구하는 문제라고 생각할 수 있다.
따라서, 수열의 합을 구하는getSum
함수를 생성하고, 각 문자열마다 합을 구해서 총합에 더해주면 이 총합이 각 퀴즈에 대한 점수가된다.
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const count = Number(input[0]);
let result = '',
i = 1;
for (i; i <= count; i++) {
let line = input[i].split(' '),
total = Number(line[0]),
j = 1,
sum = 0;
for (j; j <= total; j++) {
sum += Number(line[j]);
}
const arg = sum / total;
const _count = line.slice(1).filter((v) => Number(v) > arg).length;
const percentage = (_count / total) * 100;
if (i !== 1) {
result += '\n';
}
result = result + percentage.toFixed(3).toString() + '%';
}
console.log(result);