강의

멘토링

커뮤니티

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

ililil님의 프로필 이미지
ililil

작성한 질문수

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

5-Q

5-Q 질문

해결된 질문

작성

·

9

0

안녕하세요! 문제 조건이 '웅덩이는 겹치지 않는다' 이기 때문에 현재와 다음 상태를 비교하여 코드를 짰는데 왜 틀린지 모르겠습니다

#include <bits/stdc++.h>
using namespace std;

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

    int N, L;
    cin >> N >> L;

    vector<array<int, 2>> ar(N);
    for (int i = 0; i < N; i++) {
        int s, e;
        cin >> s >> e;
        ar[i] = {s, e - 1}; 
    }

    sort(ar.begin(), ar.end(), [](const auto& a, const auto& b) {
        return a[0] < b[0];
    });

    int ret = 0;
    int start = ar[0][0];
    int end = ar[0][1];

    for (int i = 0; i < N - 1; i++) {
        auto& cur = ar[i];
        auto& next = ar[i + 1];

        if (next[0] - cur[1] >= L) {
            int diff = end - start + 1;
            ret += diff / L;
            if (diff % L != 0) ret++;

            start = next[0];
            end = next[1];
        } else {
            end = next[1];
        }
    }

    int diff = end - start + 1;
    ret += diff / L;
    if (diff % L != 0) ret++;

    cout << ret << "\n";
    return 0;
}

 

답변 2

0

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

안녕하세요 ㅎㅎ

이부분이 좀 걸리는데요.

| --- |

|-----|

이렇게 되어있을 때 새로운 s, e를 결정하는게

if (next[0] - cur[1] >= L) {

바로 앞의 코드인데요.

cur[1]과 next[0]를 비교해야지 여기서 L이 갑자기 나오는 이유가 있을까요?

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. ililil님.

주어진 코드에서 문제를 해결하려는 방식은 적절하지만, 코드를 작성하는 과정에서 몇 가지 오류가 발생할 수 있습니다. 웅덩이는 겹치지 않는다는 조건을 고려하면서 시작점과 끝점을 계속 추적하고, 필요한 판자를 계산하는 방식을 사용하고 있습니다.

주요한 문제점과 개선 사항은 다음과 같습니다:

  1. 끝점 계산 오류: 웅덩이의 끝점을 e - 1로 설정하고 있지만, 웅덩이 시작점부터 끝점까지를 고려해야 합니다. 배열에 저장할 때 e로 저장하고 ar[i] = {s, e}로 하는 것이 더 명확할 수 있습니다.

  2. 판자의 수를 계산하는 구문: 웅덩이가 겹치지 않는다고 가정하지만, 각 웅덩이에 대해 필요한 판자의 수를 계산할 때 각기 다른 웅덩이를 고려하여 누적해야 합니다. ret 값을 누적하기 전에 판자의 한 단위 길이에 대한 계산과, 웅덩이 길이에 따른 소수점 처리를 주의하세요.

  3. 코드 로그의 위치 확인: for 루프 내부 및 외부에 ret을 증가시키는 부분에서 조건이 잘못 설정되어 있을 수 있으며, 전체 웅덩이 길이를 추적하여 매 웅덩이에 대해 새로운 판 사항을 계산할 때 로직이 초과될 수 있습니다.

아래는 이와 유사한 문제를 다룬 기존 게시물입니다. 참고하시어 코드 수정에 도움이 되시길 바랍니다:

이를 통해 웅덩이 계산이 잘못되거나 판자 배치 방식이 잘못되는 문제를 피할 수 있을 것입니다. 이처럼 작업을 스텝 바이 스텝으로 디버깅하여 문제를 해결해 보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

ililil님의 프로필 이미지
ililil

작성한 질문수

질문하기