백준 2566번을 풀어보았다.
다양한 풀이가 있겠지만 크게 다음으로 구분할 수 있다.
- 입력값을 2차원 배열로 받기
- 반복하며 비교하기 (반복문, forEach)
- Math.max 메소드 사용하기
- 입력값을 1차원 배열로 받기
- 반복하며 비교하기 (반복문, forEach)
- Math.max 메소드 사용하기
- reduce 메소드 사용하기
1. 입력값을 2차원 배열로 받기
1-1. 반복하며 비교하기
① 반복문
let input = require('fs').readFileSync('example.txt').toString().split('\n').map((value) => value.trim().split(' ').map(Number))
console.log(input)
let max = -1, row = 0, column = 0
for (let r = 0; r < 9; r++) {
for (let c = 0; c < 9; c++) {
if (max < input[r][c]) {
max = input[r][c]
row = r + 1
column = c + 1
}
}
}
console.log(max)
console.log(row, column)
② forEach
let input = require('fs').readFileSync('example.txt').toString().split('\n').map((value) => value.trim().split(' ').map(Number))
console.log(input)
let max = -1, row = 0, column = 0
input.forEach((r, rIdx) => {
r.forEach((c, cIdx) => {
if(max < c) {
max = c
row = rIdx + 1
column = cIdx + 1
}
})
})
console.log(max)
console.log(row, column)
1-2. Math.max 메소드 사용하기
let input = require('fs').readFileSync('example.txt').toString().split('\n').map((value) => value.trim().split(' ').map(Number))
console.log(input)
let max = Math.max(...input[0]), row = 0, column = 0
for (let i = 1; i < input.length; i++) {
if (max < Math.max(...input[i])) {
max = Math.max(...input[i])
row = i + 1
column = input[i].indexOf(max) + 1
}
}
console.log(max)
console.log(row, column)
2. 입력값을 1차원 배열로 받기
2-1. 반복하며 비교하기
let input = require('fs').readFileSync('example.txt').toString().split('\n').map((value) => value.trim())
console.log(input)
let max = -1, row = 0, column = 0
input.forEach((r, rIdx) => {
r.split(' ').map(Number).forEach((c, cIdx) => {
if (max < c) {
max = c
row = rIdx + 1
column = cIdx + 1
}
})
})
console.log(max)
console.log(row, column)
1-1과 같이 반복문과 forEach 모두 사용할 수 있으나 forEach 풀이만 첨부하였다.
2-2. Math.max 메소드 사용하기
let input = require('fs').readFileSync('example.txt').toString().split('\n').map((value) => value.trim())
console.log(input)
let arr = []
input.forEach((value) => {
arr.push(...value.split(' ').map(Number))
})
console.log(arr)
let max = Math.max(...arr)
let index = arr.indexOf(max)
console.log(max)
console.log(Math.floor(index/9)+1, index%9+1)
3. reduce 메소드 사용하기
참고) BAEKJOON 2566번 최댓값 풀이 / javascript
💫 이 문제를 통해 배운 것
• 배열을 반복해야 할 경우 forEach를 떠올리고 잘 활용하자!
• 최댓값을 구해야 할 경우 Math.max를 떠올리고 잘 활용하자!