Silver Library (Archived)
BJ 2562 - JS 본문
문제
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
예를 들어, 서로 다른 9개의 자연수
3, 29, 38, 12, 57, 74, 40, 85, 61
이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.
입력
첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.
출력
첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.
예제 입력 1
3 29 38 12 57 74 40 85 61
예제 출력 1
85 8
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().split('\n');
let max = input[0];
let maxIdx = 0;
// for 문을 사용하여 모든 값과 비교 후, max값을 구하고 그에 해당하는 max값의 index값을 저장하였다.
for (let i = 1; i < 9; i++) {
if (max < input[i]) {
max = input[i];
maxIdx = i;
}
}
console.log(max);
console.log(maxIdx + 1);
해석:
1. for 문을 사용 합니다. 예제 입력 값이 85가 최대값인건 알지만, 일단 i = 1, i <9; i++ .
2. if 문을 사용하여, 비교 라인을 생성합니다. [예: max 보다 들어오는 입력 값이 더 클 경우, max 는 들어오는 입력값과 같습니다.] // 그리고 maxIdx 는 i 를 의미합니다.
여기서 i 는 일종의 미지수 x 같은 역할을 하는 것으로 여겨집니다. 즉, 들어오는 입력 값의 가칭입니다.
3. (for 반복문과 if 비교문 구성이 완료되었으면) max 값과, maxIdx 값을 출력합니다. 주의할 점은, for 문을 사용하여 모든 값을 비교 한 후에, max 값을 구했다는 점 입니다.
그리고 나서, max 값에 해당되는 max 값을 index 의 값에 저장한 것 입니다.
이제 다시 코드블럭을 보겠습니다.
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().split('\n');
// max, maxIdx 선언 또는 초기화
let max = input[0];
let maxIdx = 0;
// for 문을 사용하여 모든 값과 비교 후, max값을 구하고 그에 해당하는 max값의 index값을 저장하였다.
for (let i = 1; i < 9; i++) {
if (max < input[i]) {
max = input[i];
maxIdx = i; // max index 는 i 와 동일하다. 이를 하는 목적은 아래의 출력부분을 참고.
}
}
console.log(max);
// if 비교문에서 maxIdx 가 i 와 동일하다고 해 둔 덕분에 +1 을 적용하면 최대값이 나온다.
//즉, 무슨 값이 입력되어서 출력이 되던, max 값에 해당 되는 index 값은 항상 최대 값이 출력되어 나온다.
console.log(maxIdx + 1);
음, 차라리 이게 정리에도 나아보이네요.
그렇게 해피엔딩...이 아니었습니다! 틀렸다고 나오네요.
적어도 출력은 맞으나, BJ에서 제출시에는 fs 모듈이 아닌 readline 모듈이 가능해 보입니다.
[백준/JS] 2562번 최댓값
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
velog.io
만약 위의 코드가 에매했다면, 아래는 정말 확실해서 보기는 좋다고 봅니다.
let readline = require('readline');
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function(line) {
input.push(line);
}).on('close', function() {
let numbers = [];
for(let i = 0; i < 9; i++) {
numbers.push(Number(input[i]));
}
let max = numbers[0];
let index = 0;
for(let j = 1; j < 9; j++) {
if(numbers[j] > max) {
max = numbers[j];
index = j;
}
}
console.log(max);
console.log(index + 1);
process.exit();
});
'CS Library > JavaScript - Data Structure' 카테고리의 다른 글
다시봐도 헷깔리는 While 문 (0) | 2021.08.25 |
---|---|
백준 1065 한수 - JS (0) | 2021.08.08 |
Note of readline module - Node.js (0) | 2021.07.24 |
JS, for 문 - 10950 번, A+B - 3, .on method (0) | 2021.07.20 |
JS, for 문 - 백준 2739: 구구단 (0) | 2021.07.20 |