본문 바로가기

프로그래머스/이분탐색

입국심사

728x90

programmers.co.kr/learn/courses/30/lessons/43238

 

코딩테스트 연습 - 입국심사

n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한

programmers.co.kr

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

long long solution(int n, vector<int> times) {
    long long answer = 0;
    long long total =0;
    sort(times.begin(),times.end());
    long long s = 1; 
    long long e = times[0]*(long long)n; 
   long long mid = (s+e)/2;  
   while(s<=e){
    mid = (s+e)/2;  
    total =0;
    for(int i=0; i<times.size(); i++){
        total += mid/times[i] ; 
    }
        if(total<n){s=mid+1;} 
        else if(total>=n){answer = mid; e=mid-1;} 
    }

    return answer;
}

 

헤맸던 부분

- n 옆에 (long long) 으로 cast 안해줬더니 첨에 틀렸었다. int 끼리 연산에서 long long 형을 얻을려면 casting 해주는거 잊지말자!

- total이 n보다 크거나 같아야지 모든 사람을 커버할 수 있으므로 answer 갱신은  total>=n 일 때 해주어야함

 

'프로그래머스 > 이분탐색' 카테고리의 다른 글

징검다리 - Level4  (0) 2021.04.27
길찾기게임 - 이진탐색(전위,후위)  (0) 2021.03.09
징검다리 건너기  (0) 2021.03.04
예상 대진표  (0) 2021.01.06