개발
[99클럽] 알고리즘 TIL: 백준 17608번 막대기 - JavaScript
soyooooon
2025. 2. 4. 14:29
반응형
문제링크
https://www.acmicpc.net/problem/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);
});
반응형