5x5 2차원 배열이 주어질 때 어떤 원소가 상하좌우에 있는 원소보다 클 때 해당 위치에 * 을 표시하는 프로그램을 작성하세요. 경계선에 있는 수는 상하좌우 중 존재하는 원소만을 비교합니다.
조건 1: 결과는 하나의 문자열이며, 2차원 배열의 각 배열의 요소들에 해당하는 문자는 길이 1의 공백으로 구분된다.
조건2: 결과에서 배열간의 구분은 줄바꿈(개행문자)으로 한다.
조건3: 비교할 원소가 존재하지 않는 경우 0으로 간주한다.
function solution(arr1){
arr1.push([0,0,0,0,0])
arr1.unshift([0,0,0,0,0])
arr1.map(e => e.push(0))
arr1.map(e => e.unshift(0))
for (let i=1; i<=5; i++) {
for (let j=1; j<=5; j++) {
if (arr1[i][j] > arr1[i-1][j] && arr1[i][j] > arr1[i+1][j] && arr1[i][j] > arr1[i][j-1] && arr1[i][j] > arr1[i][j+1]) {
arr1[i][j] = "*"
}
}
}
arr1.pop()
arr1.shift()
arr1.map(e => e.pop())
arr1.map(e => e.shift())
for (let i = 0; i<5; i++) {
console.log(...arr1[i]);
}
}
function solution(arr1) {
let answer = [[], [], [], [], []];
for (let i = 0; i < 5; i++) {
for (let j = 0; j < 5; j++) {
let current = arr1[i][j];
let top = i > 0 ? arr1[i - 1][j] : 0;
let bottom = i < 4 ? arr1[i + 1][j] : 0;
let left = j > 0 ? arr1[i][j - 1] : 0;
let right = j < 4 ? arr1[i][j + 1] : 0;
if (
current > top &&
current > bottom &&
current > left &&
current > right
) {
answer[i][j] = '*';
} else {
answer[i][j] = current;
}
}
}
let result = '';
for (let i = 0; i < 5; i++) {
result += answer[i].join(' ') + '\n';
}
console.log(result);
}