본문 바로가기
Algorithm

백준 1차원 배열 (10807/10871/10818/2562/5597/3052/1546/8958/4344) node.js

by 해-온 2023. 1. 23.

✏️ 문제(10807 / 개수 세기 / node.js)

 

10807번: 개수 세기

첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');

const N = Number(input[0]);
const arr = input[1].split(' ').map(Number);
const v = Number(input[2]);
let cnt = 0;

for (let i = 0; i < N; i++) {
  if (arr[i] === v) cnt++;
}

console.log(cnt);

 


 

✏️ 문제(10871 / X보다 작은 수 / node.js)

 

10871번: X보다 작은 수

첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');

const [N, X] = input[0].split(' ').map(Number);
const arr = input[1].split(' ').map(Number);
const answer = [];

arr.forEach((x) => {
  if (x < X) answer.push(x);
});

console.log(answer.join(' '));

 


 

✏️ 문제(10818 / 최소,  최대 / node.js)

 

10818번: 최소, 최대

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');

const N = Number(input[0]);
const arr = input[1].split(' ').map(Number);

console.log(Math.min(...arr), Math.max(...arr));

 


 

✏️ 문제(2562 / 최댓값 / node.js)

 

2562번: 최댓값

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n').map(Number);

let max = input[0];
let maxCnt = 0;

for (let i = 1; i < 9; i++) {
  if (max < input[i]) {
    max = input[i];
    maxCnt = i;
  }
}

console.log(max);
console.log(maxCnt + 1);

 


 

✏️ 문제(5579 / 과제 안 내신 분..? / node.js)

 

5597번: 과제 안 내신 분..?

X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데,

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n').map(Number);

const students = [];

for (let i = 1; i <= 30; i++) {
  if (!input.includes(i)) students.push(i);
}

console.log(students.join('\n'));

 


 

✏️ 문제(3052 / 나머지 / node.js)

 

3052번: 나머지

각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n').map(Number);
//trim() 없으면 '틀렸습니다' 출력

let answer = input;

for (let i = 0; i < input.length; i++) {
  answer[i] = answer[i] % 42;
}

answer = new Set(answer);

console.log([...answer].length);

 


 

✏️ 문제(1546 / 평균 / node.js)

 

1546번: 평균

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');

const N = Number(input[0]);
const score = input[1].split(' ').map(Number);
const max = Math.max(...score);

const newScore = score.map((x) => (x / max) * 100);

const sum = newScore.reduce((a, b) => a + b, 0);
const len = newScore.length;
const average = sum / len;

console.log(average.toFixed(2));

 


 

✏️ 문제(8958 / OX퀴즈 / node.js)

 

8958번: OX퀴즈

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');

const T = Number(input.shift());

for (let i = 0; i < T; i++) {
  let score = 0;
  let totalScore = 0;

  for (let j = 0; j < input[i].length; j++) {
    if (input[i][j] === 'O') score++;
    else score = 0;
    totalScore += score;
  }

  console.log(totalScore);
}

 


 

✏️ 문제(4344 / 평균은 넘겠지 / node.js)

 

4344번: 평균은 넘겠지

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

www.acmicpc.net

📝 해답

 

 

 

 

 

 

 

 

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');

const C = Number(input.shift());

for (let i = 0; i < C; i++) {
  const score = input[i].split(' ').map(Number);
  let sum = 0;
  let cnt = 0;

  for (let j = 1; j <= score[0]; j++) {
    sum += score[j];
  }

  const average = sum / score[0];

  for (let k = 1; k <= score[0]; k++) {
    if (score[k] > average) cnt++;
  }

  const answer = ((cnt / score[0]) * 100).toFixed(3);

  console.log(answer + '%');
}

 

댓글