[namuuCY] WEEK 03 Solutions#2709
Conversation
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Backtracking
- 설명: 해당 코드는 백트래킹(backtracking)으로 가능한 조합을 재귀적으로 탐색하며, 남은 합계(remainder)가 0이 되면 해를 기록하고, 음수나 초과 시 가지치기를 수행합니다.
📊 시간/공간 복잡도 분석
| 복잡도 | |
|---|---|
| Time | O(n^(t/m)) |
| Space | O(t/m) |
피드백: 가지치기 없이 루프를 계속 진행하므로 최악의 경우 모든 재귀 트리 노드를 탐색합니다. 현재 구현은 재귀 깊이가 길어질 수 있습니다.
개선 제안: 고려해볼 만한 대안: 정렬 후 각 재귀 단계에서 남은 합계보다 큰 숫자는 더 이상 탐색하지 않도록 가지치기를 추가하면 성능을 크게 개선할 수 있습니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
There was a problem hiding this comment.
해당 문제는 생각보다 DP로 구현했을때 이점이 많고, 또 아이디어가 그렇게 어렵지 않아서 한번 시도해보시는것도 좋을것 같네요!
백트래킹은 전반적으로 엄청 잘 구현하신것 같아요
📊 namuuCY 님의 학습 현황이번 주 제출 문제
누적 학습 요약
문제 풀이 현황
🤖 이 댓글은 GitHub App을 통해 자동으로 작성되었습니다. 🔢 API 사용량 (gpt-5-nano)
|
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Dynamic Programming, Monotonic Stack
- 설명: 주어진 코드는 DP 배열로 각 위치까지의 해의 수를 누적합으로 구한다. 1자리/2자리 문자 조합을 분리해 가능한 경우를 합산하는 방식으로 문제를 풀므로 DP 패턴에 해당하며, 문자열 인덱스 관리로 최적 부분구조를 이용한다.
📊 시간/공간 복잡도 분석
| 복잡도 | |
|---|---|
| Time | O(n) |
| Space | O(n) |
피드백: 각 위치에서 가능한 단일 숫자 해석과 두 자리 조합 해석 여부를 확인하여 부분해를 합산합니다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
There was a problem hiding this comment.
1개 파싱이랑 2개 파싱하는 부분 함수로 따로 빼서 코드 깔끔하게 하신거 인상적이네요!
There was a problem hiding this comment.
해당 문제도 공간복잡도 O(1)에 해결 가능하니 나중에 시도 해보시면 좋겠네요
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Dynamic Programming
- 설명: 코드는 누적 합을 이용한 부분 배열의 합을 최대화하는 1차원 DP(DP[i] = max(nums[i], DP[i-1] + nums[i])) 패턴으로 구성되어 있습니다. 공간 최적화 가능하지만 본 예시는 DP 배열을 사용하는 전형적인 DP 풀이입니다.
📊 시간/공간 복잡도 분석
| 복잡도 | |
|---|---|
| Time | O(n) |
| Space | O(n) |
피드백: DP 배열을 사용해 각 위치까지의 최댓값을 누적 계산합니다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
There was a problem hiding this comment.
해당 문제 깔끔하게 해결하시긴 했는데
- 매직 넘버 ( - 200000 ) 안 써도 되고
- O(1) 공간 복잡도
로 해결하는 방법도 있어서 어차피 시간 많이 남았으니 천천히 한번 찾아 보시는 것도 좋을 것 같습니다!
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Bit Manipulation
- 설명: 주어진 코드는 정수의 이진 표현에서 1의 개수를 세는 것으로, 비트를 직접 다루는 패턴인 Bit Manipulation에 해당합니다. 반복문으로 n을 이진수로 변환하며 각 자리의 1을 카운트합니다.
📊 시간/공간 복잡도 분석
| 복잡도 | |
|---|---|
| Time | O(k) |
| Space | O(1) |
피드백: 입력 정수 n의 비트를 하나씩 확인하며 1의 개수를 증가시킵니다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
There was a problem hiding this comment.
% 연산보다 & 비트연산자가 보통 조금 빠르죠, 이걸 이용해서 해결하시면 정말 쥐똥만큼 최적화가 되긴 하겠지만
제 생각에 면접관에게 어느정도 비트연산에 익숙하다는 느낌을 주기 좋을것 같다고 생각해요!
문제에 사용하신 %, / 연산자 모두 비트연산자로 해결 가능하니 한번 시도 해 보시는 것도 좋을 것 같아요!
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Two Pointers, Greedy, Hash Map / Hash Set
- 설명: 문자열 양쪽에서 포인터를 이동하며 유효 문자 검증과 대소문자 구분 없이 비교하는 방식으로palindrome 여부를 검사한다. 이는 좌우 포인터를 활용한 두 포인터 패턴의 전형적인 예이며, 필요 시 문자열 정제를 통해 성능/메모리 특성을 설명하는 것은 보수적으로 해석될 수 있다.
📊 시간/공간 복잡도 분석
| 복잡도 | |
|---|---|
| Time | O(n) |
| Space | O(1) |
피드백: 두 포인터를 사용해 비알파 numeric 문자를 건너뛰고 비교합니다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
| private boolean isValid(char c) { | ||
| return 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9'; | ||
| } |
There was a problem hiding this comment.
@namuuCY 안녕하세요 이번 주 리뷰를 맡게 된 최성호 입니다.
전체적으로 함수화를 잘 해주셨네요! Character.isLetterOrDigit()도 직접 구현해주셔서
나중에 좀 더 복잡한 조건이 나오면 다양하게 응용이 가능해서 좋아 보입니다.
답안 제출 문제
작성자 체크 리스트
In Review로 설정해주세요.검토자 체크 리스트
Important
본인 답안 제출 뿐만 아니라 다른 분 PR 하나 이상을 반드시 검토를 해주셔야 합니다!