Skip to content

Commit 05c5770

Browse files
committed
4주차 문제 풀이 1개 추가
- Find Minimum in Rotated Sorted Array
1 parent 3b1d109 commit 05c5770

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
class Solution {
2+
public:
3+
int findMin(vector<int>& nums) {
4+
return solve(nums, 0, nums.size() - 1);
5+
}
6+
7+
int solve(vector<int>& num, int start, int end)
8+
{
9+
if (end - start < 2)
10+
{
11+
return min(num[start], num[end]);
12+
}
13+
14+
// 중간 인덱스 계산
15+
int mid = (start + end) / 2;
16+
17+
// 오름차순 정렬이 깨지기 시작한 부분 -> 최솟값 발견
18+
if (num[mid] < num[mid - 1])
19+
{
20+
return num[mid];
21+
}
22+
23+
// 왼쪽 영역이 정렬되어 있는 경우
24+
if (num[start] <= num[mid])
25+
{
26+
// 그리고 오른쪽 영역까지도 정렬된 경우
27+
if (num[mid] <= num[end])
28+
{
29+
// 가장 왼쪽에 있는 값이 최솟값
30+
return num[start];
31+
}
32+
33+
// 왼쪽 영역만 정렬된 경우
34+
// 오른쪽 영역에서 정렬이 깨지는 부분 찾으러 가기
35+
return solve(num, mid + 1, end);
36+
}
37+
38+
// 오른쪽 영역이 정렬된 경우
39+
// 왼쪽 영역에서 정렬이 깨지는 부분 찾으러 가기
40+
return solve(num, start, mid - 1);
41+
}
42+
};

0 commit comments

Comments
 (0)