Skip to content

Commit

Permalink
add (programmers - level2 4문제): js 풀이
Browse files Browse the repository at this point in the history
  • Loading branch information
padosum committed Feb 16, 2023
1 parent 882da3d commit 89659a1
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 0 deletions.
32 changes: 32 additions & 0 deletions programmers/level2/가장 큰 정사각형 찾기.js
@@ -0,0 +1,32 @@
function solution(board) {
const width = board[0].length;
const height = board.length;
let max = 0;

const dp = Array.from({ length: height }, (v, i) =>
Array.from({ length: width }, (v, i) => 0)
);

for (let i = 0; i < height; i++) {
dp[i][0] = board[i][0];
}
for (let i = 0; i < width; i++) {
dp[0][i] = board[0][i];
}

for (let i = 1; i < height; i++) {
for (let j = 1; j < width; j++) {
if (board[i][j] === 1) {
dp[i][j] = Math.min(dp[i - 1][j - 1], dp[i][j - 1], dp[i - 1][j]) + 1;
}
}
}

for (let i = 0; i < height; i++) {
for (let j = 0; j < width; j++) {
max = Math.max(max, dp[i][j]);
}
}

return max * max;
}
18 changes: 18 additions & 0 deletions programmers/level2/뒤에 있는 큰 수 찾기.js
@@ -0,0 +1,18 @@
function solution(numbers) {
const answer = Array.from({ length: numbers.length }, (v, i) => -1);
const stack = [];

for (let i = 0; i < numbers.length; i++) {
while (stack) {
const top = stack.at(-1);
if (numbers[top] < numbers[i]) {
answer[top] = numbers[i];
stack.pop();
} else {
break;
}
}
stack.push(i);
}
return answer;
}
7 changes: 7 additions & 0 deletions programmers/level2/멀쩡한 사각형.js
@@ -0,0 +1,7 @@
const getGCD = (num1, num2) => {
return num2 === 0 ? num1 : getGCD(num2, num1 % num2);
};

function solution(w, h) {
return w * h - (w + h - getGCD(w, h));
}
22 changes: 22 additions & 0 deletions programmers/level2/택배상자.js
@@ -0,0 +1,22 @@
function solution(order) {
let answer = 0;
const belt = Array.from({ length: order.length }, (v, i) => order.length - i);
const stack = [];

for (let i = 0; i < order.length; i++) {
const current = order[i];

while (belt.at(-1) <= current) {
stack.push(belt.pop());
}

const stackTop = stack.at(-1);
if (stackTop === current) {
stack.pop();
answer++;
} else {
break;
}
}
return answer;
}

0 comments on commit 89659a1

Please sign in to comment.