diff --git a/README.md b/README.md index 2829acf..787d8fa 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,17 +112,14 @@ ### 🏷 PR 타이틀 컨벤션 -- 화요일 PR: `[WEEK01-1] {이름}` -- 금요일 PR: `[WEEK01-2] {이름}` +- 주간 PR: `[WEEK01-1] {이름}` 예) - `[WEEK01-1] 추슬기` -- `[WEEK01-2] 추슬기`

- ## 스터디원 | Name | GitHub | Language | @@ -126,5 +129,3 @@ | 추슬기 | https://github.com/doitchuu | TS/JS | > 멤버 추가 시: PR로 이 표에 본인 정보 추가해주세요. - - 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++; + } +}; 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; +};