Skip to content

Commit 0b25e76

Browse files
authored
Merge pull request #921 from neverlish/w6
[jinho] week 06
2 parents e3aa241 + 28a6355 commit 0b25e76

File tree

3 files changed

+138
-0
lines changed

3 files changed

+138
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// 시간복잡도: O(n)
2+
// 공간복잡도: O(1)
3+
4+
package main
5+
6+
import "testing"
7+
8+
func TestMaxArea(t *testing.T) {
9+
result1 := maxArea([]int{1, 8, 6, 2, 5, 4, 8, 3, 7})
10+
11+
if result1 != 49 {
12+
t.Errorf("Expected 49, but got %v", result1)
13+
}
14+
15+
result2 := maxArea([]int{1, 1})
16+
17+
if result2 != 1 {
18+
t.Errorf("Expected 1, but got %v", result2)
19+
}
20+
}
21+
22+
func maxArea(height []int) int {
23+
result := 0
24+
25+
pointer_left := 0
26+
pointer_right := len(height) - 1
27+
28+
for pointer_left < pointer_right {
29+
area := (pointer_right - pointer_left) * min(height[pointer_left], height[pointer_right])
30+
result = max(result, area)
31+
32+
if height[pointer_left] < height[pointer_right] {
33+
pointer_left++
34+
} else {
35+
pointer_right--
36+
}
37+
}
38+
39+
return result
40+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// 시간복잡도: O(n^2)
2+
// 공간복잡도: O(n)
3+
4+
package main
5+
6+
import "testing"
7+
8+
func TestLengthOfLIS(t *testing.T) {
9+
result1 := lengthOfLIS([]int{10, 9, 2, 5, 3, 7, 101, 18})
10+
11+
if result1 != 4 {
12+
t.Errorf("Expected 4, but got %v", result1)
13+
}
14+
15+
result2 := lengthOfLIS([]int{0, 1, 0, 3, 2, 3})
16+
17+
if result2 != 4 {
18+
t.Errorf("Expected 4, but got %v", result2)
19+
}
20+
21+
result3 := lengthOfLIS([]int{7, 7, 7, 7, 7, 7, 7})
22+
23+
if result3 != 1 {
24+
t.Errorf("Expected 1, but got %v", result3)
25+
}
26+
}
27+
28+
func lengthOfLIS(nums []int) int {
29+
result := 0
30+
31+
dp := make([]int, len(nums))
32+
33+
for i := 0; i < len(nums); i++ {
34+
dp[i] = 1
35+
36+
for j := 0; j < i; j++ {
37+
if nums[i] > nums[j] {
38+
dp[i] = max(dp[i], dp[j]+1)
39+
}
40+
}
41+
42+
result = max(result, dp[i])
43+
}
44+
45+
return result
46+
47+
}

valid-parentheses/neverlish.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// 시간복잡도: O(n)
2+
// 공간복잡도: O(n)
3+
4+
package main
5+
6+
import "testing"
7+
8+
func TestIsValid(t *testing.T) {
9+
result1 := isValid("()")
10+
11+
if result1 != true {
12+
t.Errorf("Expected true, but got %v", result1)
13+
}
14+
15+
result2 := isValid("()[]{}")
16+
if result2 != true {
17+
t.Errorf("Expected true, but got %v", result2)
18+
}
19+
20+
result3 := isValid("(]")
21+
if result3 != false {
22+
t.Errorf("Expected false, but got %v", result3)
23+
}
24+
25+
result4 := isValid("([)]")
26+
if result4 != false {
27+
t.Errorf("Expected false, but got %v", result4)
28+
}
29+
}
30+
31+
func isValid(s string) bool {
32+
stack := make([]rune, 0)
33+
34+
for _, c := range s {
35+
switch c {
36+
case '(':
37+
stack = append(stack, ')')
38+
case '{':
39+
stack = append(stack, '}')
40+
case '[':
41+
stack = append(stack, ']')
42+
default:
43+
if len(stack) == 0 || stack[len(stack)-1] != c {
44+
return false
45+
}
46+
stack = stack[:len(stack)-1]
47+
}
48+
}
49+
50+
return len(stack) == 0
51+
}

0 commit comments

Comments
 (0)