안녕하세요. 1차원 배열로 만들어서 O(n)이 되도록 풀어봤는데 테스트 케이스가 없어서 답이 정확한지 확신이 가질 않습니다. 로직에 오류가 없는지 한번 확인해주시면 감사하겠습니다.
let count = 0;
for (let i = 0; i < arr.length; i++) {
let top = arr[i - n] ? arr[i - n] : 0;
let left = arr[i - 1] ? arr[i - 1] : 0
let right = arr[i + 1] ? arr[i + 1] : 0
let bottom = arr[i + n] ? arr[i + n] : 0
// 배열의 양 끝인 경우
if (i % (n) === n - 1) right = 0;
if (i % (n) === 0) left = 0;
if (arr[i] > Math.max(top, left, right, bottom)) count++
}
return count
}
console.log(solution(5, [5, 3, 7, 2, 3, 3, 7, 1, 6, 1, 7, 2, 5, 3, 4, 4, 3, 6, 4, 1, 8, 7, 3, 5, 2]))
console.log(solution(4, [9, 3, 7, 4, 2, 4, 3, 3, 1, 8, 2, 7]))
console.log(solution(3, [1, 1, 1, 1, 1, 1, 1, 1, 1]))
몇번 시도해 보아도 오류는 없는것 같습니다 . 의도에 맞게 다시 풀어봐야겠네요. 감사합니다