Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions missing-number/Cyjin-jani.js
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, Math / Mathematical Pattern
  • 설명: 첫 번째 방법은 Hash Set을 이용하여 존재 여부를 체크하는 방식으로 Hash Map/Set 패턴에 속하며, 두 번째 방법은 가우스 합 공식을 활용하여 수학적 계산으로 문제를 해결하는 패턴입니다.

📊 시간/공간 복잡도 분석

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

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

피드백: 배열의 모든 원소를 Set에 저장하는 데 O(n) 공간이 필요하며, 이후 범위 내에서 존재 여부를 검사하는 과정도 O(n) 시간에 수행됩니다.

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

풀이 2: missingNumber_v2 — Time: O(n) / Space: ✅ O(1) → O(1)
유저 분석 실제 분석 결과
Time - O(n) -
Space O(1) O(1)

피드백: 배열의 합을 계산하는 데 O(n) 시간과 상수 공간이 필요하며, 공식 계산은 O(1)입니다.

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

Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/**
*
* SC: O(n)
* TC: O(n)
*/
const missingNumber = function (nums) {
const n = nums.length;
const range_min = 0;
const range_max = n;
const numsMap = new Set();

for (let num of nums) {
numsMap.add(num);
}

for (let i = range_min; i <= range_max; i++) {
if (!numsMap.has(i)) return i;
}
};

// 위 풀이의 경우 공간복잡도가 O(1)이 되지 않음.
// 아래의 경우가 공간복잡도 O(1)이 되는 풀이.
// 가우스 합 공식 이용. n개의 숫자에서 0부터 n까지의 합에서 실제 배열의 합을 빼면 누락된 숫자가 나옴.
const missingNumber_v2 = function (nums) {
const n = nums.length;
const expectedSum = (n * (n + 1)) / 2;
const actualSum = nums.reduce((acc, num) => acc + num, 0);
return expectedSum - actualSum;
};
Loading