[백준-node.js-1932] 정수 삼각형

이태헌·2023년 7월 11일
0
post-thumbnail

문제

https://www.acmicpc.net/step/1932

풀이

let input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n')
let N = input.shift();
    let inputArr = [];
    input.map((el)=>{
      inputArr.push(el.split(' ').map(Number))
    })

    
    for(let i = 1; i<N; i++){
      for(let j = 0; j<inputArr[i].length; j++){
        if(j==0) inputArr[i][j] = inputArr[i][j]+inputArr[i-1][0] // 1
        else if(j+1==inputArr[i].length) inputArr[i][j] = inputArr[i] [j]+inputArr[i-1][j-1] // 2
        else inputArr[i][j] = inputArr[i][j]+Math.max(inputArr[i-1][j],inputArr[i-1][j-1]) // 3
      }
    }
    console.log(Math.max(...inputArr[N-1]))

inputArr에 받아온 input을 다 넣어서 만들어주고 inputArr의 두번째부터 돌아가면서 수를 더해주는 형식으로 진행한다. 먼저 1번에서 배열의 가장 첫번째 수라면 윗줄에 있는 가장 첫번째 수와 더해주고 2번에서는 가장 끝줄에 있는 수는 윗줄의 -1번째 인덱스를 더해준다. 그리고 3번에서는 사잇수에서 고를수 있는 수 중 더 큰 값으로 바꿔준다.
마지막줄 inputArr[N-1]에서 가장 큰 최댓값을 구해주면 완료

0개의 댓글

Powered by GraphCDN, the GraphQL CDN