본문 바로가기
개발

[99클럽] 알고리즘 TIL: 백준 17608번 막대기 - JavaScript

by soyooooon 2025. 2. 4.
반응형

문제링크

https://www.acmicpc.net/problem/17608

백준 17608번 문제

풀이방법

  • 막대기를 처음부터 순차적으로 살펴볼까 고민했지만 보이는 여부를 하나하나 체크하기엔 복잡할 것이라는 생각이 들어서, 바라보는 시각인 마지막부터 실행을 시키면 단순하게 풀 수 있을 것이라는 생각이 들었다.
  • 바라보는 관점에서는 무조건 앞 순서보다 길이가 긴 막대기만 보일 것이기 때문에 이를 기준으로 로직을 구현했다.
  • 보이는 개수를 count=0으로 할당하고, 현재 낮은 높이를 min=0으로 할당한다.
  • 만약 현재 값이 min값보다 같거나 작으면 안 보이기 때문에 continue로 넘어간다.
  • 그렇지 않다면 현재 시각에서 보이는 막대기이기 때문에 count++를 해주고, min값을 현재 값 기준으로 업데이트 해준다.
  • 반복문 종료 후 count를 출력한다.
const readline = require("readline");

const rl = readline.createInterface({
	input: process.stdin,
	output: process.stdout,
});

const input = [];

rl.on("line", (line) => {
	input.push(line);
});

rl.on("close", () => {
	let count = 0;
	let min = 0;

	for (let i = Number(input[0]); i > 0; i--) {
		if (Number(input[i]) <= min) continue;

		min = Number(input[i]);
		count++;
	}

	console.log(count);
});
반응형