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

qwer1234님의 프로필 이미지
qwer1234

작성한 질문수

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

6-B

안녕하세요. 큰돌님 질문있습니다.

작성

·

225

0

 

bool check(int mid)
{
    if (mx > mid)
        return false;
    int temp = mid;
    int cnt = 0;
    for (int i = 0; i < n; i++)
    {
        if (mid - a[i] < 0)
        {
            mid = temp;
            cnt++;
        }
        mid -= a[i];
    }
    if (mid != temp)
        cnt++;
    return cnt <= m;
}

위와 같은 코드에서 for문을 계속 돌면서 mid -= a[i]를 해주는데 그 아래문장에서 if (mid != temp)를 검사해주는데 무조건 mid랑 temp는 다르지 않나요?? 코드가 궁금해서 질문드립니다!

답변 1

0

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

안녕하세요 1234님 ㅎㅎ

네 1234님 말씀이 맞습니다. 예리하신 지적이네요. ㅎㅎ

마지막 부분을 고려하기 위해서 그렇게 짠 건데요.

 

    int cnt = 0;
    for(int i = 0; i < n; i++){
        if(mid - a[i] < 0){
            mid = temp;
            cnt++;
        }
        mid -= a[i];
    }
    cnt++; 

이렇게 코드를 구축해도 맞습니다.

 

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

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

감사합니다.

강사 큰돌 올림.


qwer1234님의 프로필 이미지
qwer1234

작성한 질문수

질문하기