강의

멘토링

로드맵

Inflearn brand logo image

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

준석님의 프로필 이미지
준석

작성한 질문수

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

2-F

2-F 바구니 왼쪽 초기값 0

작성

·

37

0

http://boj.kr/534527d3b848463a8844e2719720724e
안녕하세요
저는 바구니 왼쪽 베이스를 0으로 해서 풀었는데

왜 1이 아닌 0으로 하면 틀리는 걸까요? 반례를 찾기 힘든것같아서 질문 드려봅니다 ㅠ

답변 2

0

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

안녕하세요 준석님 ㅎㅎ

0베이스로 해도 됩니다. 다만 이렇게 수정해보시겠어요?

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

int n, m, j, l, r, a, ret;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    
    cin >> n >> m >> j;
 
    l = 0;
    r = m - 1;

    for(int i = 0; i < j; i++){
        cin >> a;
        a -= 1;  

        if (a > r) {
            int move = a - r;
            ret += move;
            l += move;
            r += move;
        } else if (a < l) {
            int move = l - a;
            ret += move;
            l -= move;
            r -= move;
        }
    }

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

 

 


 

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

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

감사합니다.

강사 큰돌 올림.


준석님의 프로필 이미지
준석
질문자

아 우선순위 때문에 그런거였군요.
제가 원했던 건 l - (a - 1) 이였는데 제가 구현한 대로는 괄호가 없어서 (l - a) - 1) 이렇게 값이 되는 거였군요.
move로 명확하게 보여주셔서 드디어 궁금증 해결됐습니다 감사합니다 :)

0

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

바구니 문제에서 초기 값을 1이 아닌 0으로 설정하는 경우, 문제의 설명을 다시 확인해보실 필요가 있습니다. 대부분의 코딩 테스트 문제에서는 배열의 인덱스 기반이 1부터 시작되는 경우가 많아, 문제의 설명에서 이를 기준으로 문제를 해결해야 하는 경우가 있습니다. 이를 고려하지 않고 0부터 시작하게 되면, 계산 결과에서 예상치 못한 오차가 발생할 수 있습니다.

이와 관련된 질문과 답변이 있으니 참고하시면 바구니 문제를 이해하는 데 도움이 될 수 있을 것입니다.

관련 질문 URL:

  • 2-F 맞왜틀 질문

    • 설명: 위 질문에서는 바구니 위치의 계산에서 발생할 수 있는 오차를 설명하고 있습니다. 특히 이동 범위에 대한 이해와 초기 설정의 중요성에 대해 다루고 있습니다.

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

준석님의 프로필 이미지
준석

작성한 질문수

질문하기