File tree Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Original file line number Diff line number Diff line change
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
+ ```
You can’t perform that action at this time.
0 commit comments