본문 바로가기
Algorithm/Baekjoon

백준 2566번

by minhi 2025. 1. 1.

백준 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를 떠올리고 잘 활용하자!

 

'Algorithm > Baekjoon' 카테고리의 다른 글

백준 2563번  (2) 2025.01.02
백준 10798번  (0) 2025.01.01
백준 2738번  (0) 2024.12.30
백준 10988번  (0) 2024.12.30
백준 2444번  (0) 2024.12.30