Skip to content

[namuuCY] WEEK 03 Solutions#2709

Open
namuuCY wants to merge 5 commits into
DaleStudy:mainfrom
namuuCY:main
Open

[namuuCY] WEEK 03 Solutions#2709
namuuCY wants to merge 5 commits into
DaleStudy:mainfrom
namuuCY:main

Conversation

@namuuCY

@namuuCY namuuCY commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

답안 제출 문제

작성자 체크 리스트

  • Projects의 오른쪽 버튼(▼)을 눌러 확장한 뒤, Week를 현재 주차로 설정해주세요.
  • 문제를 모두 푸시면 프로젝트에서 StatusIn Review로 설정해주세요.
  • 코드 검토자 1분 이상으로부터 승인을 받으셨다면 PR을 병합해주세요.

검토자 체크 리스트

Important

본인 답안 제출 뿐만 아니라 다른 분 PR 하나 이상을 반드시 검토를 해주셔야 합니다!

  • 바로 이전에 올라온 PR에 본인을 코드 리뷰어로 추가해주세요.
  • 본인이 검토해야하는 PR의 답안 코드에 피드백을 주세요.
  • 토요일 전까지 PR을 병합할 수 있도록 승인해주세요.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🏷️ 알고리즘 패턴 분석

  • 패턴: Backtracking
  • 설명: 해당 코드는 백트래킹(backtracking)으로 가능한 조합을 재귀적으로 탐색하며, 남은 합계(remainder)가 0이 되면 해를 기록하고, 음수나 초과 시 가지치기를 수행합니다.

📊 시간/공간 복잡도 분석

복잡도
Time O(n^(t/m))
Space O(t/m)

피드백: 가지치기 없이 루프를 계속 진행하므로 최악의 경우 모든 재귀 트리 노드를 탐색합니다. 현재 구현은 재귀 깊이가 길어질 수 있습니다.

개선 제안: 고려해볼 만한 대안: 정렬 후 각 재귀 단계에서 남은 합계보다 큰 숫자는 더 이상 탐색하지 않도록 가지치기를 추가하면 성능을 크게 개선할 수 있습니다.

💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 문제는 생각보다 DP로 구현했을때 이점이 많고, 또 아이디어가 그렇게 어렵지 않아서 한번 시도해보시는것도 좋을것 같네요!

백트래킹은 전반적으로 엄청 잘 구현하신것 같아요

@dalestudy

dalestudy Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

📊 namuuCY 님의 학습 현황

이번 주 제출 문제

문제 난이도 유형 분석
combination-sum Medium ✅ 의도한 유형
decode-ways Medium ✅ 의도한 유형
maximum-subarray Medium ✅ 의도한 유형
number-of-1-bits Easy ⚠️ 유형 불일치
valid-palindrome Easy ✅ 의도한 유형

누적 학습 요약

  • 풀이한 문제: 10 / 75개
  • 이번 주 유형 일치율: 80% (5문제 중 4문제 일치)

문제 풀이 현황

카테고리 진행도 완료
Array ■■■□□□□ 4 / 10 (Medium 2, Easy 2)
Heap ■■□□□□□ 1 / 3 (Medium 1)
Dynamic Programming ■□□□□□□ 2 / 11 (Easy 1, Medium 1)
Graph ■□□□□□□ 1 / 8 (Medium 1)
String ■□□□□□□ 1 / 10 (Easy 1)
Tree ■□□□□□□ 1 / 14 (Medium 1)
Binary □□□□□□□ 0 / 5 ← 아직 시작 안 함
Interval □□□□□□□ 0 / 5 ← 아직 시작 안 함
Linked List □□□□□□□ 0 / 6 ← 아직 시작 안 함
Matrix □□□□□□□ 0 / 4 ← 아직 시작 안 함

🤖 이 댓글은 GitHub App을 통해 자동으로 작성되었습니다.

🔢 API 사용량 (gpt-5-nano)
요청 입력 토큰 출력 토큰 합계 비용
1 2,849 258 3,107 $0.000246

Comment thread decode-ways/namuuCY.java

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🏷️ 알고리즘 패턴 분석

  • 패턴: Dynamic Programming, Monotonic Stack
  • 설명: 주어진 코드는 DP 배열로 각 위치까지의 해의 수를 누적합으로 구한다. 1자리/2자리 문자 조합을 분리해 가능한 경우를 합산하는 방식으로 문제를 풀므로 DP 패턴에 해당하며, 문자열 인덱스 관리로 최적 부분구조를 이용한다.

📊 시간/공간 복잡도 분석

복잡도
Time O(n)
Space O(n)

피드백: 각 위치에서 가능한 단일 숫자 해석과 두 자리 조합 해석 여부를 확인하여 부분해를 합산합니다.

개선 제안: 현재 구현이 적절해 보입니다.

💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1개 파싱이랑 2개 파싱하는 부분 함수로 따로 빼서 코드 깔끔하게 하신거 인상적이네요!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 문제도 공간복잡도 O(1)에 해결 가능하니 나중에 시도 해보시면 좋겠네요

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🏷️ 알고리즘 패턴 분석

  • 패턴: Dynamic Programming
  • 설명: 코드는 누적 합을 이용한 부분 배열의 합을 최대화하는 1차원 DP(DP[i] = max(nums[i], DP[i-1] + nums[i])) 패턴으로 구성되어 있습니다. 공간 최적화 가능하지만 본 예시는 DP 배열을 사용하는 전형적인 DP 풀이입니다.

📊 시간/공간 복잡도 분석

복잡도
Time O(n)
Space O(n)

피드백: DP 배열을 사용해 각 위치까지의 최댓값을 누적 계산합니다.

개선 제안: 현재 구현이 적절해 보입니다.

💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 문제 깔끔하게 해결하시긴 했는데

  1. 매직 넘버 ( - 200000 ) 안 써도 되고
  2. O(1) 공간 복잡도

로 해결하는 방법도 있어서 어차피 시간 많이 남았으니 천천히 한번 찾아 보시는 것도 좋을 것 같습니다!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🏷️ 알고리즘 패턴 분석

  • 패턴: Bit Manipulation
  • 설명: 주어진 코드는 정수의 이진 표현에서 1의 개수를 세는 것으로, 비트를 직접 다루는 패턴인 Bit Manipulation에 해당합니다. 반복문으로 n을 이진수로 변환하며 각 자리의 1을 카운트합니다.

📊 시간/공간 복잡도 분석

복잡도
Time O(k)
Space O(1)

피드백: 입력 정수 n의 비트를 하나씩 확인하며 1의 개수를 증가시킵니다.

개선 제안: 현재 구현이 적절해 보입니다.

💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

% 연산보다 & 비트연산자가 보통 조금 빠르죠, 이걸 이용해서 해결하시면 정말 쥐똥만큼 최적화가 되긴 하겠지만
제 생각에 면접관에게 어느정도 비트연산에 익숙하다는 느낌을 주기 좋을것 같다고 생각해요!
문제에 사용하신 %, / 연산자 모두 비트연산자로 해결 가능하니 한번 시도 해 보시는 것도 좋을 것 같아요!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🏷️ 알고리즘 패턴 분석

  • 패턴: Two Pointers, Greedy, Hash Map / Hash Set
  • 설명: 문자열 양쪽에서 포인터를 이동하며 유효 문자 검증과 대소문자 구분 없이 비교하는 방식으로palindrome 여부를 검사한다. 이는 좌우 포인터를 활용한 두 포인터 패턴의 전형적인 예이며, 필요 시 문자열 정제를 통해 성능/메모리 특성을 설명하는 것은 보수적으로 해석될 수 있다.

📊 시간/공간 복잡도 분석

복잡도
Time O(n)
Space O(1)

피드백: 두 포인터를 사용해 비알파 numeric 문자를 건너뛰고 비교합니다.

개선 제안: 현재 구현이 적절해 보입니다.

💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!

@dolphinflow86 dolphinflow86 self-requested a review July 5, 2026 03:46
Comment on lines +44 to +46
private boolean isValid(char c) {
return 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9';
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@namuuCY 안녕하세요 이번 주 리뷰를 맡게 된 최성호 입니다.

전체적으로 함수화를 잘 해주셨네요! Character.isLetterOrDigit()도 직접 구현해주셔서
나중에 좀 더 복잡한 조건이 나오면 다양하게 응용이 가능해서 좋아 보입니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: In Review

Development

Successfully merging this pull request may close these issues.

3 participants