Skip to content

Commit ce1b784

Browse files
author
eunhwa99
committed
시간, 공간 복잡도 분석 주석 추가
1 parent 7728ffa commit ce1b784

File tree

5 files changed

+37
-8
lines changed

5 files changed

+37
-8
lines changed

3sum/eunhwa99.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
import java.util.Arrays;
33
import java.util.List;
44

5+
/**
6+
* 문제 풀이
7+
*/
58
// -4 -1 -1 0 2 2
69
// p1 p2 p3 sum < 0 -> p2 앞으로
710
// p1 p2 p3 sum < 0 -> p2 앞으로
@@ -11,7 +14,11 @@
1114
// p1 p2 p3 sum < 0 -> p2 앞으로 인데, p2 > p3 되므로 p1 앞으로
1215
// p1 p2 p3 sum = 0 반복
1316

14-
// 순회 횟수: n + (n-1) + (n-2) + .. => O(N^2)
17+
/**
18+
* 시간/공간 복잡도
19+
*/
20+
// 시간 복잡도 - 순회 횟수: n + (n-1) + (n-2) + .. => O(N^2)
21+
// 공간 복잡도 - 배열을 정렬하는 데 O(n log n)의 공간 + 결과를 저장하는 answer 리스트는 문제의 요구에 따라 O(k)의 공간 = O(n log n) (배열 정렬을 위한 공간) + O(k) (결과 저장 공간)
1522

1623
class Solution {
1724
public List<List<Integer>> threeSum(int[] nums) {

climbing-stairs/eunhwa99.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
1+
/**
2+
* 문제 풀이
3+
*/
14
// n=2 (1,1), (2) -> 2 가지
25
// n=3 (n=2, 1), (n=1, 2) -> 2 + 1 = 3가지
36
// n=4 (n=3, 1), (n=2, 2) -> 3 + 2 = 5가지
47
// n=5 (n=4, 1) , (n=3, 2)
58
// n=k (n=k-1, 1), (n=k-2, 2)
69

10+
/**
11+
* 시간/공간 복잡도
12+
*/
13+
// 시간 복잡도: 각 칸을 한 번씩 방문 -> O(n)
14+
// 공간 복잡도: DP 배열 크기 -> O(n)
715
class Solution {
816
public int climbStairs(int n) {
917
int[] cntArray = new int[n + 1];
1018
cntArray[0] = 1;
1119
cntArray[1] = 1;
12-
for (int i = 2; i <= n; ++i) { // 시간 복잡도: O(n)
20+
for (int i = 2; i <= n; ++i) {
1321
cntArray[i] = cntArray[i - 1] + cntArray[i - 2];
1422
}
1523
return cntArray[n];

construct-binary-tree-from-preorder-and-inorder-traversal/eunhwa99.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
// 시간 복잡도: 트리의 모든 노드를 한 번씩만 방문 -> O(n)
2+
// 공간 복잡도: 재귀적으로 트리를 구성 ->
3+
// 트리가 균형 잡힌 경우(즉, 트리의 높이가 log(n)인 경우), 재귀 호출 스택의 깊이는 O(log n)
4+
// 트리가 편향된 형태(예: 모두 왼쪽 자식만 존재하는 경우)라면, 재귀 깊이는 O(n)
15

26
class TreeNode {
37
int val;
@@ -29,7 +33,7 @@ public TreeNode buildTree(int[] preorder, int[] inorder) {
2933
return build(preorder, inorder, 0, inorder.length - 1);
3034
}
3135

32-
// O(n)
36+
3337
private TreeNode build(int[] preorder, int[] inorder, int inStart, int inEnd) {
3438
// 재귀 종료 조건
3539
// 포인터(인덱스)가 배열 길이를 넘었을

decode-ways/eunhwa99.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
import java.util.Arrays;
22

3+
/**
4+
* 문제 풀이
5+
* 예제) 11106
6+
* 가장 큰 수는 2자리 이므로 한 번에 갈 수 있는 칸은 1~2칸
7+
* 현재 칸이 0일 경우는 칸 이동 불가
8+
* 코드 범위는 1~26
9+
*/
310

4-
class Solution {
11+
//시간 복잡도: 문자열의 각 인덱스를 한 번씩만 처리하므로 전체 O(n)
12+
//공간 복잡도: dp 배열은 문자열의 길이에 비례하여 O(n) 공간을 차지
513

6-
// 11106
7-
// 가장 큰 수는 2자리 이므로 한 번에 갈 수 있는 칸은 1~2칸
8-
// 현재 칸이 0일 경우는 칸 이동 불가
9-
// 코드 범위는 1~26
14+
class Solution {
1015

1116
int stringSize = 0;
1217
int[] dp;

valid-anagram/eunhwa99.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
import java.util.HashMap;
22
import java.util.Map;
33

4+
/**
5+
* 시간/공간 복잡도
6+
*/
7+
// 시간 복잡도: 문자열을 한 번씩만 방문 -> O(n)
8+
// 공간 복잡도: 문자열 길이만큼 공간 필요(hashmap 크기) -> O(n)
49
class Solution {
510
public boolean isAnagram(String s, String t) {
611

0 commit comments

Comments
 (0)