From b8357d6d6bd9452ea710d1081afeb498dfb7488a Mon Sep 17 00:00:00 2001 From: doitchuu Date: Fri, 3 Apr 2026 09:48:11 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20Palindrome=20Linked=20List=20?= =?UTF-8?q?=ED=92=80=EC=9D=B4=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doitchuu/PalindromeLinkedList.js | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 doitchuu/PalindromeLinkedList.js diff --git a/doitchuu/PalindromeLinkedList.js b/doitchuu/PalindromeLinkedList.js new file mode 100644 index 0000000..84e07ea --- /dev/null +++ b/doitchuu/PalindromeLinkedList.js @@ -0,0 +1,34 @@ +/** + * Definition for singly-linked list. + * function ListNode(val, next) { + * this.val = (val===undefined ? 0 : val) + * this.next = (next===undefined ? null : next) + * } + */ +/** + * @param {ListNode} head + * @return {boolean} + */ +var isPalindrome = function(head) { + const stack = []; + let current = head; + + while (current) { + stack.push(current.val); + current = current.next; + } + + current = head; + + while (current) { + const last = stack.pop(); + + if (last !== current.val) { + return false; + } + + current = current.next; + } + + return true; +}; From df3c9f1ae8c325c0b33b755cfa2c69ef2e6f1044 Mon Sep 17 00:00:00 2001 From: doitchuu Date: Fri, 3 Apr 2026 09:50:07 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20Move=20Zeroes=20=ED=92=80=EC=9D=B4?= =?UTF-8?q?=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doitchuu/MoveZeroes.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 doitchuu/MoveZeroes.js diff --git a/doitchuu/MoveZeroes.js b/doitchuu/MoveZeroes.js new file mode 100644 index 0000000..6f7faf3 --- /dev/null +++ b/doitchuu/MoveZeroes.js @@ -0,0 +1,19 @@ +/** + * @param {number[]} nums + * @return {void} + */ +var moveZeroes = function(nums) { + let index = 0; + + for (let i = 0; i < nums.length; i++) { + if (nums[i] !== 0) { + nums[index] = nums[i]; + index++; + } + } + + while (index < nums.length) { + nums[index] = 0; + index++; + } +}; From 7aa8679fcd3cedc670745b6228ab4c1a16f4ae50 Mon Sep 17 00:00:00 2001 From: doitchuu Date: Fri, 3 Apr 2026 12:57:02 +0900 Subject: [PATCH 3/4] Update study schedule for weekly Wednesday submission cadence Align README with the revised study rhythm: three Programmers problems due by Wednesday night, Thursday lunch review/replay, and occasional SQL add-ons. Keep PR title guidance compatible with the existing automation flow so the documented process does not drift from the current script behavior. Constraint: Scope limited to README documentation only Rejected: Rename PR title format now | would diverge from current automation script Confidence: high Scope-risk: narrow Reversibility: clean Directive: If the automation workflow changes away from [WEEKNN-1], update the README and tooling together Tested: README diff review; searched README for removed Tuesday/Friday/4-problem wording Not-tested: Automation script behavior --- README.md | 128 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 94 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 2829acf..a04df2a 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,24 @@ # lunchmukgo-algorithm -매주 **화요일·금요일 오후 12시(점심시간)** 에 모여 알고리즘 문제 풀이를 공유하고 토론합니다. +매주 **목요일 오전 11:30 (KST)** 에 밥을 먹으면서, 전날까지 푼 알고리즘 문제를 함께 복기하고 PR 리뷰를 진행합니다. 알고리즘 문제를 꾸준히 풀며 **문제 해결 능력(사고력/구현력/최적화 감각)** 을 기르고, -서로의 풀이를 리뷰하면서 **다양한 접근법과 더 나은 코드 스타일**을 배우는 것을 목표로 합니다. +서로의 풀이를 리뷰하면서 **다양한 접근법과 더 나은 코드 스타일**을 배우는 것을 목표로 합니다. +핵심 흐름은 **수요일 밤까지 풀이와 PR 업로드를 끝내고, 목요일 점심 시간에 복기와 리뷰를 진행하는 것**입니다.

## 📅 스터디 일정 -- **Meeting**: 매주 **화요일 / 금요일 12:00 (KST)** -- **Weekly Problems**: 주간 총 **4문제** - - **화요일 미팅 전까지 2문제** - - **금요일 미팅 전까지 2문제** -- 문제는 **미팅 전까지 풀어오기만 하면 OK** (미팅에서 풀이/리뷰 공유) +- **Meeting**: 매주 **목요일 11:30 (KST)** +- **Weekly Problems**: 주간 총 **3문제** +- **Review Flow**: 목요일 점심 시간에 **복기 + PR 리뷰** 진행 ### 제출/진행 마감 -- **화요일 오후 12:00 전까지:** 2문제 풀이 PR 올리기 -- **금요일 오후 12:00 전까지:** 나머지 2문제 풀이 PR 올리기 +- **매주 수요일 23:59:59 (KST) 전까지:** 프로그래머스 **3문제 풀이 PR 업로드 완료** +- **매주 목요일 11:30 (KST):** 식사하면서 지난 주차 풀이 복기 및 열린 PR 리뷰 진행 -> 상황에 따라 미리 풀어도 되며, 핵심은 “각 미팅 전까지 해당 분량을 풀어오는 것”을 목표로 합니다. +> 상황에 따라 미리 풀어도 되며, 핵심은 **수요일 밤 마감 전까지 주간 3문제 풀이와 PR 업로드를 완료하는 것**입니다.

@@ -27,19 +26,25 @@ ## 🧭 문제 풀이 방법 ### 문제 구성 -- 매주 총 **4문제** -- 난이도는 주차별로 조절 +- 매주 프로그래머스 기준 **총 3문제** +- 기본 필터 기준 + - **언어: Java / JavaScript** + - **정답률: 높은 순** + - **난이도: Lv.2** +- **SQL 문제는 기본 3문제와 별개로**, 필요할 때 가끔 함께 풀이합니다. ### 풀이 방법 -1. 운영자가(또는 돌아가며) **주간 4문제**를 공지합니다. (Issue/README/노션 등) -2. 각자 문제를 풀고, **PR Template**에 맞춰 PR을 올립니다. - - 화요일 전: 2문제 PR - - 금요일 전: 추가 2문제 PR -3. 각 PR은 **최소 2명의 리뷰 코멘트**가 있어야 `merge` 가능합니다. -4. 미팅에서: - - 각 문제별로 핵심 아이디어/시간복잡도/대안 풀이 공유 +1. 운영자가(또는 돌아가며) 프로그래머스에서 **주간 3문제**를 선정합니다. +2. 선정 기준은 **Java / JavaScript / 정답률 높은 순 / Lv.2** 필터를 기본으로 합니다. +3. 각자 문제를 풀고, **PR Template**에 맞춰 **주간 1회 PR**을 올립니다. + - 수요일 23:59:59 전까지 3문제 업로드 완료 + - SQL은 진행하는 주차에 한해 별도로 함께 정리 가능 +4. 각 PR은 **최소 2명의 리뷰 코멘트**가 있어야 `merge` 가능합니다. +5. 목요일 미팅에서: + - 각 문제별 핵심 아이디어 / 시간복잡도 / 대안 풀이 복기 + - 열린 PR 리뷰 진행 - 리뷰에서 나온 포인트 정리 -5. 머지 후, 필요하면 회고(배운 점/실수 포인트)를 남깁니다. (선택) +6. 머지 후, 필요하면 회고(배운 점/실수 포인트)를 남깁니다. (선택)

@@ -48,10 +53,10 @@ ### 1) 문제 풀이 규칙 - 문제는 **스터디(미팅) 전까지만** 풀어오면 됩니다. -- 주간 목표는 **총 4문제** - - **화요일 전까지 2문제** - - **금요일 전까지 2문제** -- 풀이 PR은 해당 스터디 미팅 전까지 올리는 것을 원칙으로 합니다. +- 주간 목표는 **프로그래머스 3문제** +- 문제 선정 기본 기준은 **Java / JavaScript / 정답률 높은 순 / Lv.2** 입니다. +- 풀이 PR은 **매주 수요일 23:59:59 전까지 주 1회 업로드**하는 것을 원칙으로 합니다. +- SQL 문제는 정규 3문제를 대체하지 않으며, **가끔 추가로 함께 진행**합니다. ### 2) PR 제출 규칙 - PR에는 아래 내용이 포함되어야 합니다. @@ -75,12 +80,13 @@ - 기준: 2,000원 이내 × 2잔 (바나프레소 / 매머드커피 / 메가커피 등) **적용 케이스** -- 화요일 전 1문제 PR 미제출: 커피 2잔 -- 금요일 전 2문제 PR 미제출: 커피 2잔 +- 수요일 23:59:59 전까지 주간 3문제 PR 미업로드: 커피 2잔 +- 목요일 리뷰를 남기지 않았거나 복기에 참여하지 못한 경우: 커피 2잔 ### 5) 문제 선정 규칙 -- (선택 1) 운영자가 주간 4문제 선정 -- (선택 2) 멤버가 돌아가며 1문제씩 추천 → 4문제 확정 +- 기본은 프로그래머스에서 **Java / JavaScript / 정답률 높은 순 / Lv.2** 필터 기준으로 선정합니다. +- 운영자가 주간 3문제를 선정하거나, 멤버가 후보를 제안한 뒤 최종 3문제를 확정합니다. +- SQL은 정규 주간 문제와 별개로, 필요할 때 추가 문제로 함께 진행합니다.

@@ -90,7 +96,7 @@ ### Repository Structure 각자 **본인 GitHub 계정명 폴더** 아래에 풀이 파일을 추가합니다. -해당 주차 및 요일에 맞게 파일 추가 -> 커밋 후 master 브랜치에 머지될 수 있도록 PR을 업로드합니다. +해당 주차 기준으로 파일을 추가하고, 커밋 후 머지될 수 있도록 **주간 1회 PR**을 업로드합니다. ### 파일 네이밍 규칙 - 기본: `{ProblemTitle}.{ext}` @@ -106,16 +112,72 @@ ### 🏷 PR 타이틀 컨벤션 -- 화요일 PR: `[WEEK01-1] {이름}` -- 금요일 PR: `[WEEK01-2] {이름}` +- 주간 PR: `[WEEK01-1] {이름}` 예) - `[WEEK01-1] 추슬기` -- `[WEEK01-2] 추슬기` + +> 현재 자동화 스크립트와의 호환을 위해 주간 단일 PR도 기존 `[WEEKNN-1]` 형식을 유지합니다.

+## 🤖 Codex 자동화 CLI (`doitchuu` 전용) + +`doitchuu` 브랜치에서 아래 스크립트로 커밋/PR 워크플로를 자동 실행할 수 있습니다. + +```bash +node tools/study-workflow.mjs help +``` + +### 1) 코드 붙여넣기 → 문제별 커밋/푸시 + +```bash +cat input.md | node tools/study-workflow.mjs commit +``` + +- 코드 블록(```` ``` ````)이 여러 개면 문제별로 커밋을 분리합니다. +- 커밋 메시지 형식: `feat: 문제명 풀이 작성` +- 문제명 추론 실패 시 실행 중 문제명을 입력받습니다. + +### 2) 노션 정리 붙여넣기 → PR 본문 생성/업로드 + +```bash +cat pr-note.md | node tools/study-workflow.mjs pr --week "4주 1번째" +``` + +- PR 제목은 `[WEEKNN-N] 추슬기`로 정규화됩니다. +- 현재 README 운영 규칙상 주간 단일 PR은 **`[WEEKNN-1]`** 형식을 사용합니다. +- `풀이시간:` 누락 시 실행 중 입력받습니다. +- 같은 head/base의 열린 PR이 있으면 새로 만들지 않고 본문/제목을 업데이트합니다. + +### PR 입력 포맷 예시 + +````md +문제명: Climbing Stairs +풀이시간: 10분 +회고: 점화식을 이해하는 데 시간이 걸렸다. +내코드: +```js +var climbStairs = function(n) { + // ... +}; +``` + +문제명: Longest Palindrome +상태: 못 풀었어요 +회고: 홀수 처리 로직이 아직 익숙하지 않다. +다른사람풀이: +```js +var longestPalindrome = function(s) { + // ... +}; +``` +타인풀이회고: Math.floor(count / 2) * 2 접근이 더 명확했다. +```` + +
+
## 스터디원 @@ -126,5 +188,3 @@ | 추슬기 | https://github.com/doitchuu | TS/JS | > 멤버 추가 시: PR로 이 표에 본인 정보 추가해주세요. - - From 7ee0f318f7577293d84e6e9f67730f76809a97de Mon Sep 17 00:00:00 2001 From: doitchuu Date: Fri, 3 Apr 2026 13:00:25 +0900 Subject: [PATCH 4/4] Keep README focused on study rules only Remove the Codex automation CLI section that was accidentally included with the README schedule update. The document should stay centered on the study process itself without personal tool usage notes. Constraint: Preserve the new weekly study schedule wording Rejected: Leave the CLI section in place | user wants README limited to study guidance Confidence: high Scope-risk: narrow Reversibility: clean Directive: Keep personal automation notes out of the shared study README unless explicitly requested Tested: README grep for removed CLI/script wording Not-tested: Any automation tooling behavior --- README.md | 59 ------------------------------------------------------- 1 file changed, 59 deletions(-) diff --git a/README.md b/README.md index a04df2a..787d8fa 100644 --- a/README.md +++ b/README.md @@ -117,65 +117,6 @@ 예) - `[WEEK01-1] 추슬기` -> 현재 자동화 스크립트와의 호환을 위해 주간 단일 PR도 기존 `[WEEKNN-1]` 형식을 유지합니다. - -
-
- -## 🤖 Codex 자동화 CLI (`doitchuu` 전용) - -`doitchuu` 브랜치에서 아래 스크립트로 커밋/PR 워크플로를 자동 실행할 수 있습니다. - -```bash -node tools/study-workflow.mjs help -``` - -### 1) 코드 붙여넣기 → 문제별 커밋/푸시 - -```bash -cat input.md | node tools/study-workflow.mjs commit -``` - -- 코드 블록(```` ``` ````)이 여러 개면 문제별로 커밋을 분리합니다. -- 커밋 메시지 형식: `feat: 문제명 풀이 작성` -- 문제명 추론 실패 시 실행 중 문제명을 입력받습니다. - -### 2) 노션 정리 붙여넣기 → PR 본문 생성/업로드 - -```bash -cat pr-note.md | node tools/study-workflow.mjs pr --week "4주 1번째" -``` - -- PR 제목은 `[WEEKNN-N] 추슬기`로 정규화됩니다. -- 현재 README 운영 규칙상 주간 단일 PR은 **`[WEEKNN-1]`** 형식을 사용합니다. -- `풀이시간:` 누락 시 실행 중 입력받습니다. -- 같은 head/base의 열린 PR이 있으면 새로 만들지 않고 본문/제목을 업데이트합니다. - -### PR 입력 포맷 예시 - -````md -문제명: Climbing Stairs -풀이시간: 10분 -회고: 점화식을 이해하는 데 시간이 걸렸다. -내코드: -```js -var climbStairs = function(n) { - // ... -}; -``` - -문제명: Longest Palindrome -상태: 못 풀었어요 -회고: 홀수 처리 로직이 아직 익숙하지 않다. -다른사람풀이: -```js -var longestPalindrome = function(s) { - // ... -}; -``` -타인풀이회고: Math.floor(count / 2) * 2 접근이 더 명확했다. -```` -