https://school.programmers.co.kr/learn/courses/30/lessons/43238
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
난.. 멀었다..
N이 크면 이분탐색을 생각하자!
라는 교훈이 있는 문제였다.
그리고 이분탐색에서는,
무엇을 start로 할지, end 로 할지 결정하자!
여기에 더해
mid를 가르는 기준이 되는 값을 잘 설정하자!
로 요약되는 문제였다.
또한 이분탐색은 디테일이 중요하다.
start <= end에 부등호를 넣자.
answer에 값을 지정하기.
long long solution(int n, vector<int> times) {
long long answer=0;
sort(times.begin(),times.end());
long long start = 1;
long long end = n * (long long)times.back();
while(start<=end){ //
long long cnt =0;
long long mid = (start+end)/2;
for(int i=0;i<times.size();i++){
cnt+= mid/times[i];
}
if(n>cnt){ // n보다 못지나갔을 때
start=mid+1;
}
else{
answer=mid;
end=mid-1;
}
}
return answer;
}
'코테공부' 카테고리의 다른 글
| 다익스트라 알고리즘 (0) | 2022.11.04 |
|---|---|
| 난쟁이마을 c++ (0) | 2022.09.20 |
| stringstream (1) | 2022.09.19 |
| erase, substr.. (0) | 2022.09.02 |
| 순열 조합 (0) | 2022.08.30 |