From a983800087c41c1fa73e5af0d4d00685a3ae0252 Mon Sep 17 00:00:00 2001 From: yoouyeon Date: Mon, 6 Apr 2026 10:15:04 +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=2012973=20-=20=EC=A7=9D=EC=A7=80?= =?UTF-8?q?=EC=96=B4=20=EC=A0=9C=EA=B1=B0=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...34\352\261\260\355\225\230\352\270\260.js" | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git "a/Programmers/Level2/12973_\354\247\235\354\247\200\354\226\264_\354\240\234\352\261\260\355\225\230\352\270\260.js" "b/Programmers/Level2/12973_\354\247\235\354\247\200\354\226\264_\354\240\234\352\261\260\355\225\230\352\270\260.js" index 2f2ce5b..829b50f 100644 --- "a/Programmers/Level2/12973_\354\247\235\354\247\200\354\226\264_\354\240\234\352\261\260\355\225\230\352\270\260.js" +++ "b/Programmers/Level2/12973_\354\247\235\354\247\200\354\226\264_\354\240\234\352\261\260\355\225\230\352\270\260.js" @@ -1,10 +1,32 @@ -/* +/* ⭐️ 문제 정보 ⭐️ 문제 : 12973 - 짝지어 제거하기 레벨 : Level 2 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12973 */ +// ANCHOR 2026.04.06 풀이 (5분 소요) +{ + function solution(s) { + // 문자열의 길이가 꽤 길기 때문에 직접 제거하는 방법은 절대 비효율적 + // 포인터를 이동시키는 방법도 10초 고민했으나 아님 + // 아무래도 스택을 이용해야 할 것 같다. + // 서로 인접해야 지울 수 있기 때문에 지울 수 없는 문자들을 스택에 쌓아두고, 현재 문자와 동일한 것들을 제거하는 식으로 하자. + + const stack = []; + for (const c of s) { + if (stack.length === 0) stack.push(c); + else { + const top = stack[stack.length - 1]; + if (top === c) stack.pop(); + else stack.push(c); + } + } + + return stack.length === 0 ? 1 : 0; + } +} + // ANCHOR 2025.12.01 풀이 function solution2(s) { const stack = []; From b93428b9a3a38e18afe0c97eb72b581ea75beadc Mon Sep 17 00:00:00 2001 From: yoouyeon Date: Mon, 6 Apr 2026 10:17:25 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=20=F0=9F=92=A1=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EB=9E=98=EB=A8=B8=EC=8A=A4=2012973=20-=20=EC=A7=9D?= =?UTF-8?q?=EC=A7=80=EC=96=B4=20=EC=A0=9C=EA=B1=B0=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit at을 활용한 좀 더 컴팩트한 코드 추가 --- ...64_\354\240\234\352\261\260\355\225\230\352\270\260.js" | 7 +++++++ 1 file changed, 7 insertions(+) diff --git "a/Programmers/Level2/12973_\354\247\235\354\247\200\354\226\264_\354\240\234\352\261\260\355\225\230\352\270\260.js" "b/Programmers/Level2/12973_\354\247\235\354\247\200\354\226\264_\354\240\234\352\261\260\355\225\230\352\270\260.js" index 829b50f..fa52b48 100644 --- "a/Programmers/Level2/12973_\354\247\235\354\247\200\354\226\264_\354\240\234\352\261\260\355\225\230\352\270\260.js" +++ "b/Programmers/Level2/12973_\354\247\235\354\247\200\354\226\264_\354\240\234\352\261\260\355\225\230\352\270\260.js" @@ -21,6 +21,13 @@ if (top === c) stack.pop(); else stack.push(c); } + /** + * NOTE : at을 써서 동일한 로직을 좀 더 깔끔하게 작성할수도 있다. + * at은 스택이 비어있으면 undefined를 반환하기 때문에, 굳이 스택이 비어있는지 체크할 필요가 없다. + * const top = stack.at(-1); + * if (top === c) stack.pop(); + * else stack.push(c); + */ } return stack.length === 0 ? 1 : 0; From ad6ca8584ba3365f05358bf0a82d028028a3eb49 Mon Sep 17 00:00:00 2001 From: yoouyeon Date: Mon, 6 Apr 2026 10:32:24 +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=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" | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) 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 9deac04..eff0bd4 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" @@ -1,10 +1,40 @@ -/* +/* ⭐️ 문제 정보 ⭐️ 문제 : 42584 - 주식가격 레벨 : Level 2 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42584 */ +// ANCHOR 2026.04.06 풀이 (15분 소요) +{ + function solution(prices) { + // 이거 몇번 푼 문젠데 풀 때마다 헷갈리는듯 + // 각 가격이 몇초간 가격이 떨어지지 않았는지를 구하는 문제다;;; + // 스택에다 각 가격이랑 현재 초를 저장해두고 풀면 되겠다. + const stack = []; + const answer = []; + + for (let idx = 0; idx < prices.length; idx++) { + let price = prices[idx]; + let top = stack.at(-1); + while (top !== undefined && top.price > price) { + answer[top.idx] = idx - top.idx; + stack.pop(); + top = stack.at(-1); + } + stack.push({ price, idx }); + } + + // 남은 가격들 처리 + for (let i = 0; i < stack.length; i++) { + const { price, idx } = stack[i]; + answer[idx] = prices.length - idx - 1; + } + + return answer; + } +} + // ANCHOR 2025.12.03 풀이 function solution3(prices) { const stack = []; From 9b9a7cb7f65b927d779c31e48045b63bf2adc47c Mon Sep 17 00:00:00 2001 From: yoouyeon Date: Mon, 6 Apr 2026 11:05:08 +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=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" | 34 ++++++++++++++++++- 1 file changed, 33 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 85bbbd8..5995c98 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" @@ -1,10 +1,42 @@ -/* +/* ⭐️ 문제 정보 ⭐️ 문제 : 64061 - 크레인 인형뽑기 게임 레벨 : Level 1 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/64061 */ +// ANCHOR 2026.04.06 풀이 (21분 소요) +{ + // 구현 문제는 재미 없다. + function solution(board, moves) { + let answer = 0; + const basket = []; + const gameBoard = Array.from({ length: board.length }, (_, i) => + board + .map((row) => row[i]) + .filter((el) => el !== 0) + .reverse(), + ); + + for (const move of moves) { + // 인형을 뽑음 + const plush = gameBoard[move - 1].at(-1); + if (plush === undefined) continue; + gameBoard[move - 1].pop(); + + // 바구니를 확인 + const top = basket.at(-1); + if (top !== plush) basket.push(plush); + else { + basket.pop(); + answer += 2; + } + } + + return answer; + } +} + // ANCHOR 2025.12.03 풀이 function solution3(board, moves) { const boardStack = Array.from({ length: board.length }, () => new Array());