728x90
#2
Line:7
int*int형을 곱하기전에 제발 둘 중 하나를 long형으로 바꿔줘야 한다고
일단 스스로는 못풀었음 이분탐색이 뭔지는 아는데 구현을 못함
이분탐색 한 10문제정도는 풀어놔야겠음
모든 변수들을 long으로 통일해줘야하고
Line:7의 right값(high값)을 도대체 뭘로 설정해주어아햐는가
맨처음에는 Integer.MAX_VALUE or Long.MAX_VALUE..? 이런거 써야되나 싶었음 진짜
그리고 Line:22부분에 answer=mid 이 부분도 좀 헷갈림
if(man<n) else if(man>n) else if(man==n)
이렇게 조건문을 3개로 거는 것이 아니고
작은 경우를 제외한 나머지 조건을 else로 빼줘서 아래처럼 처리하면
lower bound를 알아서 찾아주는 메커니즘이 좀 신기했음..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import java.util.*;
class Solution {
public long solution(int n, int[] times) {
Arrays.sort(times);
long left = 0;
long right = (long)n * times[times.length-1];
long mid = 0;
long answer = 0;
while(left<=right){
long man = 0;
mid = (left+right)/2;
for(int time : times)
man+=(mid/time);
if(man<n){
left = mid+1;
}
else{
right = mid-1;
answer = mid;
}
}
return answer;
}
}
|
cs |
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][JAVA] 단체사진 찍기 (순열) (0) | 2021.10.28 |
---|---|
[프로그래머스][JAVA] 풍선 터뜨리기 (시뮬레이션) (0) | 2021.10.22 |
★ [프로그래머스][JAVA] 베스트앨범 (해시맵, Comparator) #2 (0) | 2021.10.08 |
[프로그래머스][JAVA] 표 편집 (Node) (0) | 2021.09.11 |
[프로그래머스][JAVA] 거리두기 확인하기 (BFS, 완전탐색) (0) | 2021.09.11 |