백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 2491 , 수열
문제 출처
https://www.acmicpc.net/problem/2491
정답
1) 구현
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");
const T = input[0];
const arr = input[1].split(" ").map(Number);
let Max_result = 0;
let Min_result = 0;
let Max_cnt = 1;
let Min_cnt = 1;
let check = true;
for (let i = 0; i < T - 1; i++) {
if (i === 0) {
if (arr[i] < arr[i + 1]) check = true;
else if (arr[i] > arr[i + 1]) check = false;
}
if (arr[i] < arr[i + 1] && check === false) {
check = true;
if (Min_result < Min_cnt) {
Min_result = Min_cnt;
}
Min_cnt = 1;
Max_cnt += 1;
} else if (arr[i] < arr[i + 1] && check === true) {
Max_cnt += 1;
Min_cnt = 1;
} else if (arr[i] > arr[i + 1] && check === true) {
check = false;
if (Max_result < Max_cnt) {
Max_result = Max_cnt;
}
Max_cnt = 1;
Min_cnt += 1;
} else if (arr[i] > arr[i + 1] && check === false) {
Min_cnt += 1;
Max_cnt = 1;
} else {
Max_cnt += 1;
Min_cnt += 1;
}
}
console.log(Math.max(Max_result, Min_result, Max_cnt, Min_cnt));
2) DP
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");
const T = Number(input[0]);
const arr = input[1].split(" ").map(Number);
let up_arr = [...new Array(T)].fill(1);
let down_arr = [...new Array(T)].fill(1);
for (let i = 1; i < T; i++) {
if (arr[i - 1] <= arr[i]) up_arr[i] = Math.max(up_arr[i], up_arr[i - 1] + 1);
if (arr[i - 1] >= arr[i])
down_arr[i] = Math.max(down_arr[i], down_arr[i - 1] + 1);
}
console.log(Math.max(Math.max(...up_arr), Math.max(...down_arr)));
반응형
'알고리즘 공부 > 백준 - 자바스크립트' 카테고리의 다른 글
백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 15624 , 피보나치 수 7 (0) | 2022.09.13 |
---|---|
프로그래머스 / Level2 , 연습문제 , 최솟값 만들기 자바스크립트 , JS (0) | 2022.09.12 |
백준/ Silver 2 문제 , 백준 Node.js 자바스크립트 1138 , 한 줄로 서기 [구현] (0) | 2022.09.09 |
백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 20291 , 파일 정리 [정렬] (1) | 2022.09.08 |
백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 1755 , 숫자놀이 [정렬] (0) | 2022.09.07 |