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;
}