[j2h30728] WEEK 04 Solutions#2760
Conversation
📊 j2h30728 님의 학습 현황이번 주 제출 문제
누적 학습 요약
문제 풀이 현황
🤖 이 댓글은 GitHub App을 통해 자동으로 작성되었습니다. 🔢 API 사용량 (gpt-5-nano)
|
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Dynamic Programming
- 설명: 코인 교환 문제를 금액별 최솟값으로 나타내는 부분 문제의 최적해를 쌓아가는 DP 방식으로 풀이합니다. 이중 루프는 금액마다 가능한 동전을 고려해 최솟값을 갱신합니다.
📊 시간/공간 복잡도 분석
| 복잡도 | |
|---|---|
| Time | O(amount * k) |
| Space | O(amount) |
피드백: 외부 반복으로 모든 금액에 대해 각 동전을 활용한 최소 개수를 갱신하는 표를 사용한다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Binary Search, Two Pointers
- 설명: 정렬된 배열이 회전되었을 때 최소 원소를 찾기 위해 이분탐색으로 구간을 반으로 좁혀 가는 패턴이며, 좌우 포인터를 사용하여 탐색 범위를 조절합니다.
📊 시간/공간 복잡도 분석
| 복잡도 | |
|---|---|
| Time | O(log n) |
| Space | O(1) |
피드백: 배열의 마지막 값을 기준으로 피봇 위치를 이분으로 좁혀 간다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Depth-First Search, Binary Search
- 설명: 이 코드는 재귀를 이용해 트리의 좌우 하위 문제를 먼저 탐색한 뒤 최대 깊이를 합산하는 방식으로 동작한다. 트리 구조를 순차적으로 방문하는 DFS 패턴의 대표 예시이다.
📊 시간/공간 복잡도 분석
| 복잡도 | |
|---|---|
| Time | O(n) |
| Space | O(n) |
피드백: 트리의 모든 노드를 한 번씩 방문하며 최대 깊이를 계산한다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Two Pointers, Merge
- 설명: 리스트를 두 포인터(list1, list2)로 순회하며 작은 값을 차례대로 연결하는 방식으로 해결하는 패턴입니다. 남은 부분도 한 번의 연결으로 처리하므로 두 포인터의 이동과 연결이 핵심입니다.
📊 시간/공간 복잡도 분석
| 복잡도 | |
|---|---|
| Time | O(n + m) |
| Space | O(1) |
피드백: 두 리스트의 노드를 직접 연결해서 합친 뒤 남은 부분을 붙인다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
parkhojeong
left a comment
There was a problem hiding this comment.
수고하셨습니다. 남은 문제인 word search도 풀어보시면 좋을 거 같아요.
| @@ -0,0 +1,12 @@ | |||
| function findMin(nums: number[]): number { | |||
| const n = nums.length - 1; | |||
There was a problem hiding this comment.
변수 명으로 n을 사용하신 이유가 있을까요?
| const dp = new Array(amount + 1).fill(amount + 1); | ||
| dp[0] = 0; | ||
|
|
||
| for (let i = 1; i <= amount; i++) { | ||
| for (const coin of coins) { | ||
| if (i - coin >= 0) { | ||
| dp[i] = Math.min(dp[i], 1 + dp[i - coin]); | ||
| } | ||
| } | ||
| } | ||
|
|
||
| return dp[amount] > amount ? -1 : dp[amount]; |
There was a problem hiding this comment.
amount + 1, > amount 이 연관된 로직인데 드러나지 않아서 amount + 1 을 변수로 선언해서 사용하시면 좋을 거 같아요.
| let last = nums[n]; | ||
| let left = 0, right = n; | ||
|
|
||
| while(left < right){ | ||
| const mid = (left + right) >> 1; | ||
| if(nums[mid] > last) left = mid + 1; | ||
| else right = mid; |
There was a problem hiding this comment.
이진탐색인데 last가 고정되어 있네요. 잘 이해가 안되서 그런데 이 부분 설명해주실 수 있을까요?
* week4: 104. Maximum Depth of Binary tree * week4: 21. Merge Two Sorted Lists * week4: 153. Find Minimum in Rotated Sorted Array * week4: 322. Coin Change * fix: add trailing newline to week4 solution files
일주일 동안 여름휴가로 늦게 제출합니다 ㅠㅠ..
답안 제출 문제
작성자 체크 리스트
In Review로 설정해주세요.검토자 체크 리스트
Important
본인 답안 제출 뿐만 아니라 다른 분 PR 하나 이상을 반드시 검토를 해주셔야 합니다!