From c4999f8566df864cdef4d6365146bb233e683a69 Mon Sep 17 00:00:00 2001 From: yoouyeon Date: Wed, 3 Dec 2025 18:13:21 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=F0=9F=92=A1=20=ED=94=84=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EB=9E=98=EB=A8=B8=EC=8A=A4=2042584=20-=20=EC=A3=BC=EC=8B=9D?= =?UTF-8?q?=EA=B0=80=EA=B2=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...74\354\213\235\352\260\200\352\262\251.js" | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git "a/Programmers/Level2/42584_\354\243\274\354\213\235\352\260\200\352\262\251.js" "b/Programmers/Level2/42584_\354\243\274\354\213\235\352\260\200\352\262\251.js" index 2f9ae1b..9deac04 100644 --- "a/Programmers/Level2/42584_\354\243\274\354\213\235\352\260\200\352\262\251.js" +++ "b/Programmers/Level2/42584_\354\243\274\354\213\235\352\260\200\352\262\251.js" @@ -5,6 +5,27 @@ 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42584 */ +// ANCHOR 2025.12.03 풀이 +function solution3(prices) { + const stack = []; + const answer = Array(prices.length).fill(0); + + for (let idx = 0; idx < prices.length; idx++) { + while (stack.length > 0 && prices[stack[stack.length - 1]] > prices[idx]) { + const top = stack.pop(); + answer[top] = idx - top; + } + stack.push(idx); + } + + while (stack.length > 0) { + const top = stack.pop(); + answer[top] = prices.length - top - 1; + } + + return answer; +} + // ANCHOR 2025.10.03 풀이 function solution2(prices) { const answer = new Array(prices.length); From 273074b819fe24e6780b48a93d772755f5c13810 Mon Sep 17 00:00:00 2001 From: yoouyeon Date: Wed, 3 Dec 2025 20:17:21 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=F0=9F=92=A1=20=ED=94=84=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EB=9E=98=EB=A8=B8=EC=8A=A4=2064061=20-=20=ED=81=AC=EB=A0=88?= =?UTF-8?q?=EC=9D=B8=20=EC=9D=B8=ED=98=95=EB=BD=91=EA=B8=B0=20=EA=B2=8C?= =?UTF-8?q?=EC=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...1\352\270\260_\352\262\214\354\236\204.js" | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git "a/Programmers/Level1/64061_\355\201\254\353\240\210\354\235\270_\354\235\270\355\230\225\353\275\221\352\270\260_\352\262\214\354\236\204.js" "b/Programmers/Level1/64061_\355\201\254\353\240\210\354\235\270_\354\235\270\355\230\225\353\275\221\352\270\260_\352\262\214\354\236\204.js" index 27782f3..85bbbd8 100644 --- "a/Programmers/Level1/64061_\355\201\254\353\240\210\354\235\270_\354\235\270\355\230\225\353\275\221\352\270\260_\352\262\214\354\236\204.js" +++ "b/Programmers/Level1/64061_\355\201\254\353\240\210\354\235\270_\354\235\270\355\230\225\353\275\221\352\270\260_\352\262\214\354\236\204.js" @@ -5,8 +5,33 @@ 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/64061 */ +// ANCHOR 2025.12.03 풀이 +function solution3(board, moves) { + const boardStack = Array.from({ length: board.length }, () => new Array()); + board.reverse().forEach((row) => { + for (let idx = 0; idx < row.length; idx++) { + row[idx] && boardStack[idx].push(row[idx]); + } + }); + + const basket = []; + let answer = 0; + for (let idx = 0; idx < moves.length; idx++) { + const target = boardStack[moves[idx] - 1].pop(); + if (!target) continue; + if (basket.length > 0 && target === basket[basket.length - 1]) { + basket.pop(); + answer += 2; + } else { + basket.push(target); + } + } + + return answer; +} + // ANCHOR 2025.10.03 풀이 -function solution(board, moves) { +function solution2(board, moves) { const boardSize = board.length; const topIdxs = new Array(board.length); const basket = []; From 8de99d9043a51cb4ede1e43d4cec2222248e7570 Mon Sep 17 00:00:00 2001 From: yoouyeon Date: Wed, 3 Dec 2025 21:58:47 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=F0=9F=92=A1=20=ED=94=84=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EB=9E=98=EB=A8=B8=EC=8A=A4=2081303=20-=20=ED=91=9C=20=ED=8E=B8?= =?UTF-8?q?=EC=A7=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ..._\355\221\234_\355\216\270\354\247\221.js" | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git "a/Programmers/Level3/81303_\355\221\234_\355\216\270\354\247\221.js" "b/Programmers/Level3/81303_\355\221\234_\355\216\270\354\247\221.js" index e131fe9..1ef5046 100644 --- "a/Programmers/Level3/81303_\355\221\234_\355\216\270\354\247\221.js" +++ "b/Programmers/Level3/81303_\355\221\234_\355\216\270\354\247\221.js" @@ -11,6 +11,66 @@ * - 이중 연결 리스트로 구현해서 해결 완료 */ +// ANCHOR - 2025.12.03 풀이 + +function solution3(n, k, cmd) { + const row = Array.from({ length: n }, (_, idx) => ({ + prev: idx === 0 ? null : idx - 1, + isDeleted: false, + next: idx === n - 1 ? null : idx + 1, + })); + + const deleted = []; + let cur = k; + for (let idx = 0; idx < cmd.length; idx++) { + const [op, argstr] = cmd[idx].split(" "); + const arg = Number(argstr); + switch (op) { + case "U": + for (let cnt = 0; cnt < arg; cnt++) { + cur = row[cur].prev; + } + break; + case "D": + for (let cnt = 0; cnt < arg; cnt++) { + cur = row[cur].next; + } + break; + case "C": + // 현재 선택된 행을 삭제 + row[cur].isDeleted = true; + deleted.push(cur); + // 현재 선택된 행이 가장 마지막 행인 경우 현재 행을 그 위 행으로 + if (row[cur].next === null) { + cur = row[cur].prev; + if (cur) row[cur].next = null; + } else { + // 그 외에는 아래 행 선택 + if (row[cur].prev !== null) row[row[cur].prev].next = row[cur].next; + row[row[cur].next].prev = row[cur].prev; + cur = row[cur].next; + } + break; + case "Z": + // 최근에 삭제된 것 복구 + const deletedIdx = deleted.pop(); + if (deletedIdx === undefined) break; + if (row[deletedIdx].prev !== null) + row[row[deletedIdx].prev].next = deletedIdx; + if (row[deletedIdx].next !== null) + row[row[deletedIdx].next].prev = deletedIdx; + row[deletedIdx].isDeleted = false; + break; + } + } + + const answer = row.reduce( + (acc, { isDeleted }) => (acc += isDeleted ? "X" : "O"), + "" + ); + return answer; +} + // ANCHOR - 2025.10.04 풀이 - 이중 연결 리스트 function solution2(n, k, cmd) { // 각 노드가 가리키는 prev와 next를 저장하는 배열 (이중 연결 리스트) From a7c447d36adc2f2de8d73d3897f9df2ea1fe91c8 Mon Sep 17 00:00:00 2001 From: yoouyeon Date: Wed, 3 Dec 2025 22:09:39 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=F0=9F=92=A1=20=ED=94=84=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EB=9E=98=EB=A8=B8=EC=8A=A4=2081303=20-=20=ED=91=9C=20=ED=8E=B8?= =?UTF-8?q?=EC=A7=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cur 존재 여부 확인 조건 명확하게 수정 --- .../Level3/81303_\355\221\234_\355\216\270\354\247\221.js" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/Programmers/Level3/81303_\355\221\234_\355\216\270\354\247\221.js" "b/Programmers/Level3/81303_\355\221\234_\355\216\270\354\247\221.js" index 1ef5046..5bcdf86 100644 --- "a/Programmers/Level3/81303_\355\221\234_\355\216\270\354\247\221.js" +++ "b/Programmers/Level3/81303_\355\221\234_\355\216\270\354\247\221.js" @@ -43,7 +43,7 @@ function solution3(n, k, cmd) { // 현재 선택된 행이 가장 마지막 행인 경우 현재 행을 그 위 행으로 if (row[cur].next === null) { cur = row[cur].prev; - if (cur) row[cur].next = null; + if (cur !== null) row[cur].next = null; } else { // 그 외에는 아래 행 선택 if (row[cur].prev !== null) row[row[cur].prev].next = row[cur].next;