새소식

Baekjoon

[BaekJoon] 24998 번 blobnom 문제 - (nodejs)

  • -
728x90
문제 번호 :  24998 번

문제 바로가기 https://www.acmicpc.net/problem/24498

 

<<< 문제 내용 >>>

 

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
const input = fs.readFileSync(filePath).toString().trim().split("\n");

const N = input[0];
const block = input[1].split(" ").map(Number);

const answer = [block[0], block[block.length - 1]];
for (let i = 1; i < block.length - 1; i++) {
  answer.push(Math.min(block[i - 1], block[i + 1]) + block[i]);
}

console.log(Math.max(...answer));

* 요즘 프로젝트 기획이 끝난 후 구현 단계에 들어서 굉장히 바빠졌다.

어려운 문제를 풀기엔 조금 벅차고, 감을 잃지 않게 끔 적절히 문제를 풀 예정이다.

 

이번 문제는 제 1회 블롭컵이라는 백준 대회의 1번 문제이다.

머릿 속에서 시뮬레이션을 잠깐 돌려보면

 

첫 번째와 마지막을 제외한 중간만 양 옆을 -1하면서 자기(a라 칭함)는 +1 할 수 있다. ( 0 까지만 )

더 많이 쌓아보려고 한다면, 양 옆이 0이 되는 곳을 더 높여줘야 하는데, 이러면 지금 최대한 높게 쌓고자 했던

a가 줄어든다.

결국은, 그냥 자기 위치에서 양 옆 중 최소 값을 찾아서 걔 만큼만 더 올릴 수 있다. 는 결론이 나온다.

 

-> 한 번만에 통과하지 못했던 이유는 첫 번째 탑과 마지막 탑이 제일 높은 경우를 고려하지 않았었다.

 

 

 

도움이 되셨다면 공감 부탁드립니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.