캐또's coding

2566 - 최댓값 - node.js 본문

기초 공부/백준 문제 풀이

2566 - 최댓값 - node.js

JS_K_coding 2022. 12. 22. 11:22

https://www.acmicpc.net/problem/2566

 

2566번: 최댓값

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다.

www.acmicpc.net


9 * 9의 행렬에서 최댓값을 구하고 그 값이 위치한 행과 렬의 값을 출력하면 되는 문제이다.

행렬을 그대로 활용하는 방법이 있을지 모르겠으나, 가장 쉽게 해결하는 방법은 다음과 같다.

1. 주어진 숫자를 한 줄의 array로 만든다.

2. array에서 최댓값을 찾는다.

3. 최댓값의 index를 찾는다.

4. 9로 나눈 몫 + 1은 행 값이 된다.

5. 9로 나눈 나머지는 열 값이 된다.

 

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
// 데이터를 가져오는 것으로 시작.

let arr = [];
// 빈 배열을 준비한다.
for (i = 0; i < 9; i++) {
  arr.push(input[i].split(" "));
}
// 9*9짜리 행렬을 한 줄로 바꿔주기 위해 각 줄을 돌면서 ' '으로 나눠준다.
arr = arr.flat(1).map(Number);
// flat을 통해 여러 겹으로 되어 있는 배열을 평탄화할 수 있다. [[][]]를 []하나로 만들어주는 매직
let maxIndex = arr.indexOf(Math.max(...arr));
// arr의 최댓값에 해당하는 인덱스
console.log(Math.max(...arr));
// arr의 최댓값을 구해서 출력한다.
console.log(Math.floor(maxIndex / 9) + 1, (maxIndex % 9) + 1);
// 위에서 할당했던 최댓값에 해당하는 인덱스에서 9로 나눈뒤 +1한 값 즉 행값, 9로 나눈 나머지 +1값 즉 열값을 출력한다.
// 최종 출력은 그냥 두 줄로 했는데 \n을 넣어서 한 줄에 해도 상관 없겠다.
Comments