개발자를 희망하는 초보의 자기개발 이야기

백준 2562번 최댓값 문제 - Node.js 본문

자료구조&알고리즘/BOJ(백준 온라인 저지)

백준 2562번 최댓값 문제 - Node.js

클라우드아실 2024. 10. 21. 21:28
반응형

문제 원문 링크

문제

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

풀이1

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

let maxNum = 0;
let idx = 0;
for (let num of input) {
  if (num > maxNum) {
    maxNum = num;
    idx = input.indexOf(num);
  }
}
console.log(maxNum);
console.log(idx+1);

반복문으로 배열을 순회하고( for .. of 를 적용해봤다.) 이때 if문을 통해 최댓값을 갱신한다.
최댓값이 갱신될 때마다 해당 최대값을 indexOf 메서드로 조회해 인덱스를 찾는다.
최종 출력에서 인덱스 +1 을 해야 몇 번째 수인지 알 수 있다. 
실행 시간은 92ms였다.

풀이2

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

let maxNum = Math.max(...input);
let idx = input.indexOf(maxNum);
console.log(maxNum);
console.log(idx + 1);

메서드를 통해 간단히 풀어보면서 실행시간을 비교해봤다.
Math.max 메서드를 통해 최대값을 찾았고,
indexOf에 해당 최대값을 넣어 인덱스를 찾는다.
실행시간은 88ms 였다. 

반응형