| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- 노개북
- 백준1026
- flex box
- 자바스크립트 함수
- 백준21313
- 1789 node.js
- 코딩
- 21313 nodejs
- 모던자바스크립트DeepDive
- 노마드스터디
- 14655 nodejs
- 자바스크립트 딥다이브
- 1026 node.js
- 모던자바스크립트
- 1541 node.js
- 개발자
- 자바스크립트 일급객체
- 모던자바스크립트 딥다이브
- 백준1789
- CSS flex
- 1931 node.js
- Javascript
- 개인프로젝트
- 11399 node.js
- const
- 11047 node.js
- IT5분잡학사전
- 노마드북클럽
- 2217 node.js
- 백준25176
Archives
- Today
- Total
캐또's coding
2566 - 최댓값 - node.js 본문
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을 넣어서 한 줄에 해도 상관 없겠다.'기초 공부 > 백준 문제 풀이' 카테고리의 다른 글
| 2750 - 수 정렬하기 - node.js (0) | 2023.01.03 |
|---|---|
| 2563 - 색종이 - node.js (0) | 2023.01.02 |
| 2738 - 행렬 덧셈 - node.js (0) | 2022.12.20 |
| 9020 - 골드바흐의 추측 - node.js (0) | 2022.12.08 |
| 4948 - 베르트랑 공준 - node.js (0) | 2022.08.30 |
Comments