Algorithm/백준
[백준] 1027 고층 건물 JS
SSONGMI
2024. 2. 15. 14:50
반응형
문제 출처:https://www.acmicpc.net/problem/1027https://www.acmicpc.net/problem/2234
1. 입력
: 첫째 줄에 빌딩의 수 N이 주어진다.
: N은 50보다 작거나 같은 자연수이다.
: 둘째 줄에 1번 빌딩부터 그 높이가 주어진다.
: 높이는 1,000,000,000보다 작거나 같은 자연수이다.
2. 결과
: 첫째 줄에 문제의 정답을 출력한다.
3. 풀이
:각 건물에 대해 왼쪽과 오른쪽 방향으로 건물들을 확인한다.
: 각 방향에 대해 현재 건물과 다른 건물 사이의 기울기를 계산하고, 이전에 계산된 기울기와 비교하여 서로 볼 수 있는지 판단한다.
: 최대로 볼 수 있는 건물의 수를 max 변수에 저장한다.
let fs = require("fs");
let input = fs.readFileSync("./input.txt").toString().trim().split("\n");
const N = Number(input.shift().trim());
const buildings = input.shift().trim().split(' ').map(num => Number(num));
let max = Number.MIN_SAFE_INTEGER;
for(let i = 0; i < N; i++) {
// left
let cnt = 0;
let gradient = Number.MAX_SAFE_INTEGER;
for(let l = i-1; l >= 0; l--) {
if(gradient > (buildings[i] - buildings[l]) / (i - l)) {
gradient = (buildings[i] - buildings[l]) / (i - l);
cnt++;
}
}
gradient = Number.MIN_SAFE_INTEGER;
// right
for(let r = i+1; r < N; r++) {
if(gradient < (buildings[i] - buildings[r]) / (i - r)) {
gradient = (buildings[i] - buildings[r]) / (i - r);
cnt++;
}
}
max = Math.max(cnt, max);
}
console.log(max);
반응형