[tigermint] WEEK 09 Solutions - #2830
Conversation
๐ tigermint ๋์ ํ์ต ํํฉ์ด๋ฒ ์ฃผ ์ ์ถ ๋ฌธ์
๋์ ํ์ต ์์ฝ
๋ฌธ์ ํ์ด ํํฉ
๐ค ์ด ๋๊ธ์ GitHub App์ ํตํด ์๋์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๐ข API ์ฌ์ฉ๋ (gpt-5-nano)
|
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
linked-list-cycle/tigermint.kt
/**
* Example:
* var li = ListNode(5)
* var v = li.`val`
* Definition for singly-linked list.
* class ListNode(var `val`: Int) {
* var next: ListNode? = null
* }
*/
/**
* TC: O(n)
* SC: O(n)
*/
class Solution1 {
fun hasCycle(head: ListNode?): Boolean {
val visited = mutableSetOf<ListNode>()
var current = head
while (current != null) {
if (current in visited) return true
visited.add(current)
current = current.next
}
return false
}
}
/**
* TC: O(n)
* SC: O(1)
*/
class Solution2 {
fun hasCycle(head: ListNode?): Boolean {
var slow = head
var fast = head?.next?.next
while (fast != null) {
if (slow == fast) return true
slow = slow?.next
fast = fast?.next?.next
}
return false
}
}
- ํจํด: Two Pointers, Floydโs Tortoise and Hare, Hash Map / Hash Set
- ์ค๋ช : ์ฝ๋1์ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ํด์ ์ ์ผ๋ก ์ถ์ ํ๋ ํด์ ๋งต/์ ํจํด, ์ฝ๋2๋ ๋ ํฌ์ธํฐ๋ฅผ ์ด์ฉํ ์ํ ์ฌ๋ถ ํ์ธ(Floyd์ ์ํ ๊ณ ๋ฆฌ ํ์ง) ํจํด์ผ๋ก ๋ถ๋ฅ๋ฉ๋๋ค. ๋ ๊ตฌํ ๋ชจ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ฌ์ดํด ์ฌ๋ถ ํ๋จ์ ํด๋นํฉ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
โน๏ธ ์ด ํ์ผ์๋ 2๊ฐ์ง ํ์ด๊ฐ ํฌํจ๋์ด ์์ด ๊ฐ๊ฐ ๋ถ์ํฉ๋๋ค.
ํ์ด 1: Solution1.hasCycle โ Time: โ
O(n) โ O(n) / Space: โ
O(n) โ O(n)
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n) | O(n) | โ |
| Space | O(n) | O(n) | โ |
ํผ๋๋ฐฑ: ๊ฐ ๋ ธ๋๋ฅผ ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธํ๋ฉฐ ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ์ธํธ๋ก ์ ์ฅํ๋ฏ๋ก ์ต์ ์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ ธ๋๋ฅผ ์ ์ฅํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
ํ์ด 2: Solution2.hasCycle โ Time: โ
O(n) โ O(n) / Space: โ
O(1) โ O(1)
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n) | O(n) | โ |
| Space | O(1) | O(1) | โ |
ํผ๋๋ฐฑ: ์ถ๊ฐ ํ์ด์ง ์์ด ์์ ๊ณต๊ฐ์ผ๋ก ์ฌ์ดํด ์ฌ๋ถ๋ฅผ ํ๋ณํ๋ค. ์ด๊ธฐ fast ํฌ์ธํฐ์ ์์ ์์น์ ์ฃผ์ํด์ผ ํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
There was a problem hiding this comment.
๐ท๏ธ ์๊ณ ๋ฆฌ์ฆ ํจํด ๋ถ์
maximum-product-subarray/tigermint.kt
/**
* TC: O(n)
* SC: O(1)
* ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ ์์ ์ min/max ๋ชจ๋ ์ถ์ ํด์ผํ๋ค
*/
class Solution {
fun maxProduct(nums: IntArray): Int {
var curMax = nums[0]
var curMin = nums[0]
var answer = nums[0]
for (i in 1 ..< nums.size) {
val n = nums[i]
val nextMax = maxOf(n, curMax * n, curMin * n)
val nextMin = minOf(n, curMax * n, curMin * n)
curMax = nextMax
curMin = nextMin
answer = maxOf(answer, curMax)
}
return answer
}
}
- ํจํด: Dynamic Programming, Greedy, Binary Search
- ์ค๋ช : ์์ ํฌํจ ์ ์ต๋ ๊ณฑ์ ์ ์งํ๊ธฐ ์ํด ํ์ฌ ์ต๋/์ต์ ์ฐ์ ๊ตฌ๊ฐ ๊ณฑ์ ํจ๊ป ๊ฐฑ์ ํ๋ ํจํด์ผ๋ก, ์ฐ์ ๊ตฌ๊ฐ์ ์ต๋๊ฐ์ ๋์ ์ผ๋ก ์ถ์ ํ๋ DP ์ฑ๊ฒฉ๊ณผ ๋ถํธ๋ฅผ ๊ณ ๋ คํ ์ต์ ํ(๊ทธ๋ฆฌ๋์ ์คํ๋ ์ ํ) ํน์ง์ด ๋ณด์ ๋๋ค.
๐ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ ๋ถ์
| ์ ์ ๋ถ์ | ์ค์ ๋ถ์ | ๊ฒฐ๊ณผ | |
|---|---|---|---|
| Time | O(n) | O(n) | โ |
| Space | O(1) | O(1) | โ |
ํผ๋๋ฐฑ: ์์์ ๋ถํธ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด ํ์ฌ ์์น์์์ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ํจ๊ป ์ ์งํ๋ค. ๊ฐ ์์์ ๋ํด ์์/ํ์ ๊ณฑ์ ๋น๊ตํ์ฌ ๊ฐฑ์ ํ๋ค.
๊ฐ์ ์ ์: ํ์ฌ ๊ตฌํ์ด ์ ์ ํด ๋ณด์ ๋๋ค.
parkhojeong
left a comment
There was a problem hiding this comment.
์๊ณ ํ์ จ์ต๋๋ค~
๋ต์ ์ ์ถ ๋ฌธ์
์์ฑ์ ์ฒดํฌ ๋ฆฌ์คํธ
In Review๋ก ์ค์ ํด์ฃผ์ธ์.๊ฒํ ์ ์ฒดํฌ ๋ฆฌ์คํธ
Important
๋ณธ์ธ ๋ต์ ์ ์ถ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ถ PR ํ๋ ์ด์์ ๋ฐ๋์ ๊ฒํ ๋ฅผ ํด์ฃผ์ ์ผ ํฉ๋๋ค!