const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().split("\n");
input = input[1].split(" ").map((item) => +item);
// console.log(input); [20, 10, 35, 30, 7];
let minValue = Math.min(...input); // ...arr 배열의 element들을 배열에서 꺼내어 리턴.
// console.log(minValue); 7;
let maxValue = Math.max(...input);
// console.log(maxValue); 35;
console.log(minValue + " " + maxValue);
알아보기 (배열을 꺼내 풀어주는 것에 대해서)
apply(함수에서 사용할 this 객체, 호출하는 함수로 전달할 파라미터) - 파라미터는 배열 형태로 입력.
let maxValue = Math.max.apply(null, arr);
// apply(this, 배열) this 지정할 필요 없으면 null.
console.log(maxValue);
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().split("\n");
// console.log(input); ["3", "29", "38", "12", "57", "74", "40", "85", "61"];
// 스트링으로 변환되어 배열이 된 입력값을 숫자로 변환한다.
// 최댓값을 구한다.
// indexOf로 최댓값을 대입해서 몇번째인지 표시한다.
// 여기서는 인덱스가 아닌 단순히 몇번째인지 알려는 것 그래서 + 1
input = input.map((item) => +item);
// console.log(input); [3, 29, 38, 12, 57, 74, 40, 85, 61];
let maxNumber = Math.max(...input);
//or let maxNumber = Math.max.apply(null, input);
// console.log(maxNumber); 85
let numOrder = input.indexOf(85) + 1;
// console.log(numOrder); 7
console.log(maxNumber + "\n" + numOrder);
-------틀렸다고 뜸.------
let maxNumber = Math.max(...input);
let numOrder = input.indexOf(maxNumber) + 1;
console.log(maxNumber + "\n" + numOrder);
indexOf에 85를 아닌 maxNumber를 넣으니 맞았다고 뜸.
--------반복문, 조건문 통해서 풀어보기------
let max = input[0];
let maxIndex = 0;
for (let i = 0; i < input.length; i++) {
if (max < input[i]) {
max = input[i];
maxIndex = i;
}
}
console.log(max + "\n" + (maxIndex + 1));
/* max가 input[i] 보다 작으면 input[i]가
max로 되고 maxIndex값도 해당 i값 지정*/
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs
.readFileSync(filePath)
.toString()
.split("\n")
.map((item) => +item);
// console.log(input); [ 150, 266, 427 ]
// 배열 안의 숫자를 곱해준다
// 결과값에서 0~9 까지 숫자가 몇번씩 나오는지 구한다
// 숫자를 줄바꿈으로 표현한다.
let num = String(input[0] * input[1] * input[2]);
// console.log(num); //17037300;
// console.log(num[1]); // 그대로 Number로 쓰게 되면 undefined 뜸.
for (let i = 0; i <= 9; i++) {
let count = 0;
for (let j = 0; j < num.length; j++) {
if (num[j] == i) {
count++;
}
}
console.log(count);
}
const { count } = require("console");
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs
.readFileSync(filePath)
.toString()
.split("\n")
.map((x) => +x);
// console.log(input);[39, 40, 41, 42, 43, 44, 82, 83, 84, 85];
// 나머지를 모두 구하여 배열화 하고 중복된 요소를 제거한 후 인덱스값 + 1로 ?
let newArr = [];
for (let i = 0; i < input.length; i++) {
newArr.push(input[i] % 42);
}
//console.log(newArr);[39, 40, 41, 0, 1, 2, 40, 41, 0, 1];
let result = newArr.filter((element, index) => {
return newArr.indexOf(element) === index;
});
//console.log(result); [39, 40, 41, 0, 1, 2];
console.log(result.length);
--------입력값 모두 결과는 제대로 나옴-----근데 틀림
const userNum = [];
input.forEach(x => {
const num = x % 42;
if (userNum.indexOf(num) === -1) {
userNum.push(num);
}
});
console.log(userNum.length);
------------다른풀이----------
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
const count = new Set(input.map(x => x % 42)).size;
console.log(count);
나의 생각 : forEach, set, map 메서드 등을 학습하고 다시 풀어보자.
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().split("\n");
//console.log(input); ["3", "40 80 60"];
/*
1. 과목 개수(N) = input[0]
2. 점수 배열 새로 짜기 -> let newArr = input[1].split(' ')
3. 최대 값 = Math.max(newArr);
4. 평균 구하기 : newArr의 요소를 요소 / 최대값 * 100 으로 계산 후 모두 더하고 N으로 나눈다.
*/
let N = +input[0];
// console.log(N);
let score = input[1].split(" ").map((x) => +x);
// console.log(score); [40, 80, 60];
let max = Math.max.apply(null, score);
//console.log(max); 80
let result = [];
for (let i = 0; i < score.length; i++) {
newScore = (score[i] / max) * 100;
result.push(newScore);
}
// console.log(result);
// [
// 11.11111111111111, 22.22222222222222, 33.33333333333333, 44.44444444444444,
// 55.55555555555556, 66.66666666666666, 77.77777777777779, 88.88888888888889,
// 100,
// ];
let sum = 0;
result.forEach((value) => (sum += value));
console.log(sum);
let realResult = sum / N;
console.log(realResult);
-----------맞았지만 아쉽다----이렇게 짧은 코드와 같다----
const num = input[0] * 1; // 점수 개수
const score = input[1].split(" "); //점수들 배열로 만듦
const max = Math.max(...score); //최댓값
let sum = 0;
for (let i = 0; i < num; i++) {
sum += (score[i] / max) * 100;
} //내가 만든 코드가 결국 이렇게 짧은 코드..
console.log(sum / num);
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().split("\n");
let arrayLength = +input[0]; // 5
let items = input.slice(1); // slice(star, end) 1번 요소부터 끝까지만 잘라서 새 배열을 만듦.
for (let i = 0; i < arrayLength; i++) {
let oxList = items[i];
let oCount = 0;
let score = 0;
for (let j = 0; j < oxList.length; j++) {
let oxQuiz = oxList[j]; // OOXXOXXOOO 0번 인덱스부터 차례대로 / 1번 인덱스도 O니까
if (oxQuiz === "O") {
// 해당 인덱스의 요소가 O와 같다면 / 조건을 만족하고
oCount++; // oCount를 1 올려주고 / oCount(1)의 값을 2로 만들어주고
score += oCount; // scores는 1이 된다. / 1의 값을 가진 score에 2가 된 oCount가 더해져서 score가 3이 된다.
} else {
// 다음 2번인덱스 차례에서는 위 조건을 만족하지 않으니
oCount = 0; //oCount의 값은 다시 0으로 초기화 된다.
}
}
console.log(score);
}
// console.log(input); // 입력값을 줄 별로 나눠 배열로 만들었다.
input = input[1].split(" ").map((x) => +x);
// console.log(input); // [5, 50, 50, 70, 80, 100]; // 첫번째 케이스를 기준을 코딩하기 위해서 따로 뻄.
//반 인원 수 : input[0]
let total = 0;
for (let i = 1; i < input.length; i++) {
total += input[i];
}
// console.log(total); //350 얘를 input[0]으로 나눠
let avg = total / input[0];
// console.log(avg); //70
let avgUp = 0;
for (j = 1; j < input.length; j++) {
if (input[j] > avg) {
avgUp++;
}
}
let result = (avgUp / input[0]) * 100;
// console.log(result); //40
console.log(result.toFixed(3), "%"); //40.000 %
const fs = require("fs");
const { fileURLToPath } = require("url");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().split("\n");
let allCases = input[0]; // 총 반의 개수
for (let i = 1; i <= allCases; i++) {
// i= 1 가정
let cases = input[i].split(" "); // 1번 case 요소들 배열 새로 만듦.
let studentsNum = Number(cases[0]); // 1번 인덱스 인풋 학생 수
let sum = 0;
for (let j = 1; j <= studentsNum; j++) {
//1번 점수 총 합.
sum += Number(cases[j]);
}
let avg = sum / studentsNum;
let upperScore = 0;
for (let k = 1; k <= studentsNum; k++) {
if (avg < cases[k]) {
upperScore++;
}
}
result = ((upperScore / studentsNum) * 100).toFixed(3);
console.log(result + "%");
}