인프런 커뮤니티 질문&답변

JOXXEP님의 프로필 이미지
JOXXEP

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

6-A

왜 틀렸는지 모르겠습니다 ㅠ

해결된 질문

작성

·

184

0

#include <bits/stdc++.h>

using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL); 

    long long int N, M, low=1, high=0, ret=__LONG_LONG_MAX__;
    cin >> N >> M;
    vector<long long int> color;
    for (int i=0;i<M;i++){
        long long int temp;
        cin >> temp;
        color.push_back(temp);
        high=max(temp,high);
    }
    while(low<=high){
        long long int mid=(low+high)/2;
        long long int cnt=0;
        for (long long int &i:color){
            cnt+=i/mid;
            if (cnt%mid) cnt++;
        }
        if (cnt>N){
            low=mid+1;
        }
        else{
            ret=min(ret,mid);
            high=mid-1;
        }
    }
    cout << ret;
}

강의를 듣기 전에 먼저 풀어보고 계속 틀려서 강의에서 나온대로 어느정도 수정했는데도 틀리는데 이유를 모르겠습니다...!

답변 2

0

JOXXEP님의 프로필 이미지
JOXXEP
질문자

아 그 부분이 잘못된 거였군요.. 감사합니다

이 전에 썼던 코드도 같은 결과가 나와야 할 것 같은데 통과가 안 돼서 질문드려봅니다

for (long long int &i:color){
            if (i<=mid){
                cnt++;
            }
            else if (!i%mid) cnt+=i/mid;
            else cnt+=i/mid+1;
        }

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 JOXX님 ㅎㅎ

잘 짜셨네요. ㅎㅎ

다만,

        for (long long int &i:color){
            cnt+=i/mid;
            if (i%mid) cnt++;
        }

이렇게 되어야 하는게 아닐까요?

 


또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


JOXXEP님의 프로필 이미지
JOXXEP

작성한 질문수

질문하기