Skip to content

Commit 6462b4d

Browse files
authored
Merge pull request #21 from Mustsa-JS-Algorithm-Study/byul
김별 4주차 과제
2 parents dbf8dea + 92c6eb8 commit 6462b4d

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

4주차 - 이진 탐색/byul.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
> # 1. 입국심사
2+
3+
```
4+
- 막혔던 부분
5+
이분 탐색을 어떤 곳에 써야 하는지 ?
6+
-> 아직 알고리즘 문제를 많이 안 풀어봐서 그런 것 같다.
7+
```
8+
9+
```
10+
- 사고 방식
11+
12+
1. 예상되는 최소 시간과 최대 시간을 먼저 생각하자
13+
14+
- 최소 시간 : 1로 설정
15+
- 최대 시간 : times의 최댓값\*n
16+
17+
2. 최소,최대의 중간값으로 시간을 설정하고 그 시간안에 모든 사람이 검사를 받을 수 있는지 확인한다.
18+
19+
3. - 시간이 남으면 -> 최대를 중간값으로 설정
20+
- 시간이 부족하면 -> 최소를 중간값으로 설정
21+
22+
4. 가장 적절한 값을 구한다.
23+
```
24+
25+
```javascript
26+
function solution(n, times) {
27+
times.sort((a, b) => a - b);
28+
let left = 1;
29+
let right = times[times.length - 1] * n;
30+
while (left <= right) {
31+
let mid = Math.floor((left + right) / 2);
32+
let total = 0;
33+
for (var time of times) {
34+
total += Math.floor(mid / time);
35+
}
36+
total >= n ? (right = mid - 1) : (left = mid + 1);
37+
}
38+
return left;
39+
}
40+
```
41+
42+
> # 2. 징검다리
43+
>
44+
> https://school.programmers.co.kr/questions/31861
45+
46+
이 링크의 해설을 읽고 정리해 보았습니다..
47+
48+
```
49+
1. distance의 범위가 1,000,000,000 이므로 이분탐색이 가장 효율적이다.
50+
2. 이분탐색을 어떤 값으로 할 것인가?
51+
3. distance가 적합하다. min은 0, max는 distance
52+
4. 이분탐색을 진행하면서,돌을 몇개를 빼야 지금 mid 값이 되는 지를 확인하자.
53+
5. - 만약 주어진 n 보다 적게 필요하면, 더 큰 최솟값이 나올 수 있으니 mid를 min에 맞춘다.
54+
- n보다 많이 필요하면 mid를 max에 맞춘다.
55+
```

0 commit comments

Comments
 (0)