코테공부

프로그래머스 입국심사 c++

하얀잔디 2022. 9. 1. 17:52

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