diff --git a/find-minimum-in-rotated-sorted-array/neverlish.go b/find-minimum-in-rotated-sorted-array/neverlish.go
new file mode 100644
index 000000000..33cee33f6
--- /dev/null
+++ b/find-minimum-in-rotated-sorted-array/neverlish.go
@@ -0,0 +1,14 @@
+// 시간복잡도: O(n)
+// 공간복잡도: O(1)
+
+func findMin(nums []int) int {
+	result := nums[0]
+
+	for i := 1; i < len(nums)-1; i++ {
+		if nums[i] < nums[i-1] {
+			result = nums[i]
+		}
+	}
+	return result
+
+}
diff --git a/linked-list-cycle/neverlish.go b/linked-list-cycle/neverlish.go
new file mode 100644
index 000000000..8f36f49ab
--- /dev/null
+++ b/linked-list-cycle/neverlish.go
@@ -0,0 +1,15 @@
+// 시간복잡도: O(n)
+// 공간복잡도: O(n)
+
+func hasCycle(head *ListNode) bool {
+	visited := make(map[*ListNode]bool)
+
+	for head != nil {
+		if visited[head] {
+			return true
+		}
+		visited[head] = true
+		head = head.Next
+	}
+	return false
+}
diff --git a/maximum-product-subarray/neverlish.go b/maximum-product-subarray/neverlish.go
new file mode 100644
index 000000000..9e6ce0ef9
--- /dev/null
+++ b/maximum-product-subarray/neverlish.go
@@ -0,0 +1,37 @@
+// 시간복잡도: O(n)
+// 공간복잡도: O(1)
+
+func maxProduct(nums []int) int {
+	result, max, min := nums[0], 1, 1
+
+	for _, num := range nums {
+		candidates := []int{max * num, min * num, num}
+		max = maxIntIn3(candidates[0], candidates[1], candidates[2])
+		min = minIntIn3(candidates[0], candidates[1], candidates[2])
+		if max > result {
+			result = max
+		}
+	}
+
+	return result
+}
+
+func maxIntIn3(a, b, c int) int {
+	if a > b && a > c {
+		return a
+	}
+	if b > c {
+		return b
+	}
+	return c
+}
+
+func minIntIn3(a, b, c int) int {
+	if a < b && a < c {
+		return a
+	}
+	if b < c {
+		return b
+	}
+	return c
+}