Skip to content

[sonshn] WEEK 01 Solutions#2659

Merged
sonshn merged 6 commits into
DaleStudy:mainfrom
sonshn:main
Jun 27, 2026
Merged

[sonshn] WEEK 01 Solutions#2659
sonshn merged 6 commits into
DaleStudy:mainfrom
sonshn:main

Conversation

@sonshn

@sonshn sonshn commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

답안 제출 문제

작성자 체크 리스트

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

검토자 체크 리스트

Important

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

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

@dalestudy

dalestudy Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

📊 sonshn 님의 학습 현황

이번 주 제출 문제

문제 난이도 유형 분석
contains-duplicate Easy ✅ 의도한 유형
house-robber Medium ⚠️ 유형 불일치
longest-consecutive-sequence Medium ⚠️ 유형 불일치
top-k-frequent-elements Medium ⚠️ 유형 불일치
two-sum Easy ⚠️ 유형 불일치

누적 학습 요약

  • 풀이한 문제: 0 / 75개
  • 이번 주 유형 일치율: 20% (5문제 중 1문제 일치)

문제 풀이 현황

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

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

🔢 API 사용량 (gpt-5-nano)
요청 입력 토큰 출력 토큰 합계 비용
1 625 67 692 $0.000058
2 1,037 114 1,151 $0.000097
3 1,626 211 1,837 $0.000166
4 1,965 243 2,208 $0.000195
합계 5,253 635 5,888 $0.000517

@xeulbn xeulbn self-requested a review June 26, 2026 07:56

@xeulbn xeulbn left a comment

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.

전체적으로 문제 요구사항을 잘 반영했고, 풀이 흐름도 명확해서 이해하기 좋았습니다.

다만 일부 문제들은 다른 관점에서 한 번 더 고민해보시는 것도 좋을 것 같습니다!!

*/
class Solution {
public boolean containsDuplicate(int[] nums) {
HashSet<Integer> distinctSet = new HashSet<>();

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.

현재 코드에서는 HashSet 고유 기능보다는 Set 인터페이스에서 제공하는 contains, add 메서드만 사용하고 있는 것 같습니다.

그래서 변수 타입을 HashSet로 두기보다,
인터페이스 타입인 Set로 선언해도 괜찮을 것 같은데
혹시 따로 HashSet 구현체로 명시하신 이유가 있을까요?

Comment thread two-sum/sonshn.java
@@ -0,0 +1,17 @@
class Solution {
public int[] twoSum(int[] nums, int target) {

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(n)
*/
class Solution {
public int[] topKFrequent(int[] nums, int k) {

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.

지금 풀어주신 풀이도 충분히 직관적이고 이해하기 좋은 것 같습니다.
다만 이 문제의 경우, 결과로 필요한 값은 상위 k개뿐이기 때문에 모든 고유 숫자를 정렬하지 않고 필요한 개수만 유지하는 방식도 고려해볼 수 있을 것 같습니다.

예를 들어 PriorityQueue를 활용하면 상위 k개의 후보만 관리할 수 있어서 고유 숫자의 개수가 많고 k가 상대적으로 작을 때 정렬 비용을 줄이는 데 도움이 될 수 있을 것 같습니다.

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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Hash Map / Hash Set, Greedy
  • 설명: 집합을 이용해 중복 여부를 빠르게 확인하는 방식으로, 한 번의 순회와 상수/로그 수준의 탐색으로 중복 여부를 판단하므로 해시 기반 패턴과 간단한 탐색 흐름이 결합됩니다.

📊 시간/공간 복잡도 분석

ℹ️ 이 파일에는 2가지 풀이가 포함되어 있어 각각 분석합니다.

풀이 1: Solution.containsDuplicate — Time: ✅ O(n) → O(n) / Space: ✅ O(n) → O(n)
유저 분석 실제 분석 결과
Time O(n) O(n)
Space O(n) O(n)

피드백: 집합에 값을 하나씩 삽입하며 중복 여부를 체크하므로 시간은 배열 길이에 비례하고, 추가적인 저장공간은 중복 여부를 판단하기 위해 필요합니다.

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

풀이 2: Solution.containsDuplicate — Time: ✅ O(n) → O(n) / Space: ✅ O(n) → O(n)
유저 분석 실제 분석 결과
Time O(n) O(n)
Space O(n) O(n)

피드백: 집합에 값을 하나씩 삽입하며 중복 여부를 체크하므로 시간은 배열 길이에 비례하고, 추가적인 저장공간은 중복 여부를 판단하기 위해 필요합니다.

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

Comment thread house-robber/sonshn.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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Depth-First Search, Backtracking, Dynamic Programming
  • 설명: 재귀 DFS를 사용해 현재 집에서 털고 다음 이웃을 건너뛰는 경우를 분기하여 최적해를 찾는 패턴이다. 중복 계산이 있어 비효율적이나, 하위 문제를 재귀적으로 해결하는 구조가 Backtracking 및 DP의 기초가 된다.

📊 시간/공간 복잡도 분석

유저 분석 실제 분석 결과
Time O(2^n) O(2^n)
Space O(2^n) O(n)

피드백: 각 위치에서 두 가지 선택(도둑질-현 위치 건너뛰기 vs 건너뛰기)으로 분기하며 중복 재귀 호출이 많아 지수 시간 복잡도가 됩니다. 메모이제이션이 필요합니다.

개선 제안: 고려해볼 만한 대안: 메모이제이션(탐색 중복 제거) 또는 DP bottom-up로 시간 복잡도를 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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Binary Search, Greedy, Sort/Order-based Pattern
  • 설명: 주어진 코드는 배열을 정렬한 뒤 인접 요소를 비교하여 연속 부분수열의 길이를 추적합니다. 정렬이 핵심 전제이며, 연속 여부 판단과 구간 길이의 최댓값 갱신이 주된 작업입니다.

📊 시간/공간 복잡도 분석

유저 분석 실제 분석 결과
Time O(n log n) O(n log n)
Space O(n log n) O(1)

피드백: 정렬이 필요해 전체 복잡도가 O(n log 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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Hash Map / Hash Set, Sorting
  • 설명: 해당 코드는 각 숫자의 빈도수를 HashMap으로 계산하고, 빈도수 기준으로 정렬한 후 상위 k개를 선택합니다. 따라서 Hash Map 패턴과 정렬(Sort) 패턴이 주로 사용됩니다.

📊 시간/공간 복잡도 분석

ℹ️ 이 파일에는 2가지 풀이가 포함되어 있어 각각 분석합니다.

풀이 1: Solution.topKFrequent — Time: ❌ O(n log n) → O(n log m) / Space: ❌ O(n) → O(m)
유저 분석 실제 분석 결과
Time O(n log n) O(n log m)
Space O(n) O(m)

피드백: 빈도 계산과 정렬로 간단하게 해결하지만, n은 배열 길이, m은 고유 숫자 수입니다. 정렬 대신 힙(heap)을 사용하면 O(n log k)도 가능.

개선 제안: 고려해볼 만한 대안: 해시맵 + 힙을 사용해 상위 k개를 추출하는 방식으로 개선.

풀이 2: Solution.topKFrequent — Time: ❌ O(n log n) → O(n log m) / Space: ❌ O(n) → O(m)
유저 분석 실제 분석 결과
Time O(n log n) O(n log m)
Space O(n) O(m)

피드백: 빈도 계산과 정렬로 간단하게 해결하지만, n은 배열 길이, m은 고유 숫자 수입니다. 정렬 대신 힙(heap)을 사용하면 O(n log k)도 가능.

개선 제안: 고려해볼 만한 대안: 해시맵 + 힙을 사용해 상위 k개를 추출하는 방식으로 개선.

Comment thread two-sum/sonshn.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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Brute Force
  • 설명: 두 개의 루프를 이용해 모든 쌍의 합을 검사하는 전형적인 브루트 포스(Brute Force) 방식으로 문제를 해결합니다.

📊 시간/공간 복잡도 분석

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

피드백: 브루트포스 방식으로 구현되어 최악의 경우 큰 입력에서 비효율적입니다.

개선 제안: 고려해볼 만한 대안: 해시맵을 사용해 한 번의 순회로 해결하는 O(n) 풀이로 개선.

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

@sonshn sonshn moved this from Solving to In Review in 리트코드 스터디 8기 Jun 27, 2026
@sonshn sonshn merged commit 53217fb into DaleStudy:main Jun 27, 2026
1 check passed
@github-project-automation github-project-automation Bot moved this from In Review to Completed in 리트코드 스터디 8기 Jun 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Completed

Development

Successfully merging this pull request may close these issues.

2 participants