https://school.programmers.co.kr/learn/courses/30/lessons/43238?itm_content=course14743
#include <string>
#include <vector>
#include<iostream>
#include<algorithm>
typedef long long ll;
using namespace std;
long long solution(int n, vector<int> times) {
ll answer = 0;
sort(times.begin(), times.end());
ll right = (ll)times[times.size()-1]*n; // n은 최대 10억이기에 둘을 곱할 경우 10^18 수가 나옴. 이에 int 범위인 21억을 초과하기에 (ll)캐스팅
ll left = 1;
while(left<=right){
ll mid = (right+left)/2;
ll cnt = 0;
for(ll idx =0; idx<times.size();++idx){
cnt+=(mid/times[idx]);
}
if(cnt < n){
left = mid+1;
}
else{ // cnt>=n을 만족하는 최솟값이 답.
answer = mid;
right = mid - 1;
}
}
return answer;
}'프로그래머스 > 코딩테스트' 카테고리의 다른 글
| lv1) 중요한 단어를 스포 방지 [정답률 가장 낮은 문제] (0) | 2026.08.05 |
|---|---|
| lv2) 혼자서 하는 틱택토 (0) | 2026.07.18 |
| lv3) 여행경로 (BFS로 풀어보기) (0) | 2026.07.16 |
| lv2) 비밀코드 해독 (0) | 2026.07.09 |
| lv2) 짝지어 제거하기 c++로 lv5 정도 될 듯 하다. (0) | 2026.07.08 |
