[namuuCY] WEEK 01 solutions#2650
Conversation
📊 namuuCY 님의 학습 현황이번 주 제출 문제
누적 학습 요약
문제 풀이 현황
🤖 이 댓글은 GitHub App을 통해 자동으로 작성되었습니다. 🔢 API 사용량 (gpt-5-nano)
|
yuseok89
left a comment
There was a problem hiding this comment.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
여전히 위와 같은 코멘트가 보이는데요.
제 풀이에서 여러가지 해봤을 때,
앞 줄에 이렇게 주석으로 남기면 봇이 인식하는 것 같았습니다 !
| @@ -0,0 +1,34 @@ | |||
| /** | |||
There was a problem hiding this comment.
| /** | |
| // TC: O(N) | |
| // SC: O(N) | |
| /** |
There was a problem hiding this comment.
조언 감사드립니다!
방금 수정했고, 오늘 2문제 추가 풀이 후 commit 올리겠습니다.
| @@ -0,0 +1,76 @@ | |||
| class Solution { | |||
There was a problem hiding this comment.
| class Solution { | |
| // TC: O(N) | |
| // SC: O(1) | |
| class Solution { |
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Hash Map / Hash Set, Greedy
- 설명: 집합(Set)을 이용해 이미 본 숫자를 빠르게 확인하는 방식으로 중복 여부를 판단한다. 각 원소를 순차적으로 확인하며, 이미 존재하면 즉시 종료하는 탐색 패턴이다.
📊 시간/공간 복잡도 분석
| 복잡도 | |
|---|---|
| Time | O(n) |
| Space | O(n) |
피드백: 한 번의 순회로 각 숫자를 HashSet에 저장하며 중복 여부를 판단합니다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Dynamic Programming, Greedy
- 설명: 코드는 이웃 서브문제의 최댓값을 활용하는 DP 아이디어를 단순 순회로 구현한 예로, 한 칸 건너뜀과 누적 합의 최댓값을 유지하는 형태가 DP 패턴에 해당합니다. 또한 제약에 따라 선택과 비선택의 최대를 격리해 계산하는 모습은 그리디적 요소와도 연결됩니다.
📊 시간/공간 복잡도 분석
| 복잡도 | |
|---|---|
| Time | O(n) |
| Space | O(1) |
피드백: 두 상태를 유지하며 이전 값을 이용해 현재 값을 갱신하는 방식으로 공간을 상수로 관리합니다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Sort, Two Pointers, Dynamic Programming
- 설명: 배열 정렬 후 연속 증가 구간을 탐색하는 흐름으로, 인접 원소 비교로 연속 수를 세는 방식이다. 직접적인 DP/슬라이딩 윈도우보다는 정렬 기반의 탐색 패턴에 가깝다.
📊 시간/공간 복잡도 분석
| 복잡도 | |
|---|---|
| Time | O(n log n) |
| Space | O(1) |
피드백: 정렬이 필요하므로 시간복잡도는 n log n이며, 추가 배열 없이 상수 공간으로 구현합니다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Hash Map / Hash Set, Sorting
- 설명: 숫자 빈도수 저장에 HashMap을 사용하고, 빈도수를 기준으로 내림차순 정렬하여 상위 k개를 추출하는 흐름으로 구성되어 있어 Hash Map과 Sorting 패턴이 모두 해당됩니다.
📊 시간/공간 복잡도 분석
| 복잡도 | |
|---|---|
| Time | O(n log n) |
| Space | O(n) |
피드백: 빈도 수를 키로 하는 맵과 그 키들로 구성된 리스트를 정렬해 상위 k개를 선택합니다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Hash Map / Hash Set, Two Pointers
- 설명: 해당 코드는 한 번 순회하며 해시맵으로 이미 본 수의 인덱스를 기록하고, 현재 수와 타깃의 차가 이미 존재하는지 확인하는 방식으로 해결합니다. 이때 해시 맵을 이용한 조회-저장 패턴이 핵심이며, 두 수의 합을 찾는 문제의 대표적인 키워드입니다.
📊 시간/공간 복잡도 분석
| 복잡도 | |
|---|---|
| Time | O(n) |
| Space | O(n) |
피드백: 해시맵으로 이미 본 값의 인덱스를 저장하고, 필요한 값을 만날 때 쌍을 즉시 반환합니다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
yuseok89
left a comment
There was a problem hiding this comment.
1주차 고생 많으셨습니다 !
생각의 흐름을 주석에 남겨 놓는 부분은 매우 좋은 습관인 것 같습니다 👍
| List<Integer> numbers = new ArrayList<>(numberCount.keySet()); | ||
|
|
||
| numbers.sort((first, second) -> | ||
| Integer.compare(numberCount.get(second), numberCount.get(first)) | ||
| ); |
There was a problem hiding this comment.
정렬 대신 빈도수를 배열 인덱스로 활용하는 버킷 정렬을 쓰면 시간 복잡도를 O(NlogN)에서 O(N)으로 줄일 수 있습니다.
빈도수의 최댓값은 배열 길이 N 을 넘지 않으므로, List[] buckets = new List[nums.length + 1] (혹은, 빈도수의 최대값 만큼)을 선언해 빈도별로 숫자를 담은 뒤, 역순으로 K 개를 꺼내면 정렬 없이 빠르게 처리할 수 있어 제안해 드립니다.
|
|
||
| class Solution { | ||
| public int longestConsecutive(int[] nums) { | ||
| Arrays.sort(nums); |
There was a problem hiding this comment.
HashSet 을 활용하면 정렬 없이 O(N) 시간 복잡도로 풀이할 수 있습니다.
답안 제출 문제
작성자 체크 리스트
In Review로 설정해주세요.검토자 체크 리스트
Important
본인 답안 제출 뿐만 아니라 다른 분 PR 하나 이상을 반드시 검토를 해주셔야 합니다!