Skip to content

Commit 6e9197f

Browse files
committed
add solution: meeting rooms ii
1 parent 30322dc commit 6e9197f

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

β€Žmeeting-rooms-ii/flynn.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
풀이
3+
- 회의의 μ‹œμž‘μ‹œκ°„κ³Ό μ’…λ£Œμ‹œκ°„μ„ 각각 μ˜€λ¦„μ°¨μˆœ μ •λ ¬ν•˜μ—¬ 풀이할 수 μžˆμŠ΅λ‹ˆλ‹€
4+
Big O
5+
- N: μ£Όμ–΄μ§„ λ°°μ—΄ intervals의 길이
6+
- Time complexity: O(NlogN)
7+
- starts, ends 생성 -> O(N)
8+
- slices.Sort() -> O(NlogN)
9+
- λ§ˆμ§€λ§‰ 반볡문 -> O(N)
10+
- Space complexity: O(logN)
11+
- Go의 slices.Sort()λŠ” ν€΅μ†ŒνŠΈλ₯Ό μ΄μš©ν•˜λ―€λ‘œ μž¬κ·€ 호좜 μŠ€νƒ 깊이 O(logN)이 κ³ λ €λ˜μ–΄μ•Ό 함
12+
*/
13+
14+
import "slices"
15+
16+
func minMeetingRooms(intervals [][]int) int {
17+
n := len(intervals)
18+
19+
if n == 1 {
20+
return 1
21+
}
22+
23+
starts := make([]int, n) // 회의 μ‹œμž‘μ‹œκ°„λ“€
24+
ends := make([]int, n) // 회의 μ’…λ£Œμ‹œκ°„λ“€
25+
for i, interval := range intervals {
26+
starts[i] = interval[0]
27+
ends[i] = interval[1]
28+
}
29+
// μ˜€λ¦„μ°¨μˆœ μ •λ ¬
30+
slices.Sort(starts)
31+
slices.Sort(ends)
32+
33+
rooms := 0
34+
sPtr := 0
35+
ePtr := 0
36+
for sPtr < n {
37+
if starts[sPtr] < ends[ePtr] { // ν˜„μž¬ μ‚¬μš©κ°€λŠ₯ν•œ νšŒμ˜μ‹€μ΄ μ—†μŒ (ν˜„μž¬ 진행쀑인 λͺ¨λ“  νšŒμ˜κ°€ starts[sPtr]보닀 큼)
38+
rooms++ // μƒˆλ‘œμš΄ νšŒμ˜μ‹€ 좔가함
39+
} else {
40+
ePtr++ // κΈ°μ‘΄ νšŒμ˜μ‹€ 쀑에 λ‚¨λŠ” 방이 있음, μƒˆλ‘œμš΄ νšŒμ˜μ‹€ μΆ”κ°€ν•˜μ§€ μ•ŠμŒ
41+
}
42+
sPtr++
43+
}
44+
45+
return rooms
46+
}

0 commit comments

Comments
Β (0)