밝을희 클태

[백준 node.js / javascript] 최대값 문제 백준(2566) 본문

백준

[백준 node.js / javascript] 최대값 문제 백준(2566)

huipark 2023. 10. 21. 11:45

문제


<그림 1>과 같이 9×9 격자판에 쓰여진 81개의 자연수 또는 0이 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지 구하는 프로그램을 작성하시오.

예를 들어, 다음과 같이 81개의 수가 주어지면

이들 중 최댓값은 90이고, 이 값은 5행 7열에 위치한다.

 

input으로 들어온 값 중에 최대값을 찾고 그 최댓값의 idx를 구하는 문제다


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

let answers = "";
let y = 0;
let max = Math.max(...input[0]);
for (let i = 1; i < input.length; i++) {
	let tempMax = Math.max(...input[i]);
	if (max < tempMax) {
		max = tempMax;
		y = i;
	}
}
answers += max + "\n";
answers += y + 1 + " ";
answers += input[y].indexOf(max) + 1;
console.log(answers.trim());

 

 

일단 input을 받아야 하니 readFileSync로 동기로 input을 받아준다. 지금 문제에서 2차원 배열로 idx를 찾으므로 똑같이 2차원 배열로 파싱해 주고 Number로 바꿔준다.

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

그리고 일단 첫번째 Y열의 max값을 찾아주고

let max = Math.max(...input[0]);

반복문을 돌면서 max 보다 큰 값이 있으면 max를 새로 대입해 주고 y열 idx를 저장해 주고

for (let i = 1; i < input.length; i++) {
	let tempMax = Math.max(...input[i]);
	if (max < tempMax) {
		max = tempMax;
		y = i;
	}
}

반복문이 끝나면 answers 문자열에 문제에서 요구하는 출력값 대로 값을 넣어주고 출력한다.

answers += max + "\n";
answers += y + 1 + " ";
answers += input[y].indexOf(max) + 1;
console.log(answers.trim());