Skip to main content

02. 2차원 배열 탐색

문제 풀이

Ch.02 - 01. 큰 수 출력하기

function solution(n, arr) {
const answer = [];

arr.reduce((preNum, curNum) => {
if (preNum < curNum) answer.push(curNum);

return curNum;
}, n);

return answer;
}

Ch.02 - 02. 보이는 학생

function solution(n, arr) {
let answer = 0;

arr.reduce((preNum, curNum) => {
if (preNum < curNum) {
answer++;
return curNum;
}

return preNum;
}, n);

return answer;
}

Ch.02 - 03. 가위 바위 보

function solution(n, arr1, arr2) {
const victoryConditionsObj = {
1: 2,
2: 3,
3: 1,
};

const scoreList = [];

for (let i = 0; i < n; i++) {
const tempA = arr1[i];
const tempB = arr2[i];

if (tempA === tempB) {
scoreList.push("D");
} else {
scoreList.push(victoryConditionsObj[tempA] === tempB ? "B" : "A");
}
}

return scoreList;
}

Ch.02 - 04. 점수계산

function solution(arr) {
let answer = 0;

arr.reduce((acc, cur) => {
const addPoint = cur ? acc + 1 : 0;
answer += addPoint;

return addPoint;
}, 0);

return answer;
}

Ch.02 - 05. 등수구하기

function solution(arr) {
const n = arr.length;
let answer = new Array(n).fill(1);

for (let i = 0; i < n; i++) {
const scoreA = arr[i];
for (let j = 0; j < n; j++) {
const scoreB = arr[j];
if (scoreA < scoreB) answer[i]++;
}
}
return answer;
}

Ch.02 - 06. 격자판 최대합

function solution(n, arr) {
let answer = 0;

for (let i = 0; i < n; i++) {
let rowSum = 0;
let colSum = 0;
for (let j = 0; j < n; j++) {
rowSum += arr[i][j];
colSum += arr[j][i];
}
answer = Math.max(answer, rowSum, colSum);
}

{
let leftCrossSum = 0;
let rightCrossSum = 0;

for (let l = 0; l < n; l++) {
leftCrossSum += arr[l][l];
rightCrossSum += arr[l][n - l - 1];
}
answer = Math.max(answer, leftCrossSum, rightCrossSum);
}

return answer;
}

Ch.02 - 07. 봉우리

function solution(n, arr) {
let answer = 0;

for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
const curHeight = arr[i][j];

const eastHeight = arr[i]?.[j - 1] || 0;
const westHeight = arr[i]?.[j + 1] || 0;
const southHeight = arr[i + 1]?.[j] || 0;
const northHeight = arr[i - 1]?.[j] || 0;

if (
eastHeight < curHeight &&
westHeight < curHeight &&
southHeight < curHeight &&
northHeight < curHeight
) {
answer++;
}
}
}

return answer;
}