강의

멘토링

로드맵

Inflearn brand logo image

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

요가인님의 프로필 이미지
요가인

작성한 질문수

질문있습니다

작성

·

16

0

#include <iostream>
using namespace std;

int N, M, J;
int l, r, cnt;

int main(){
    cin >> N >> M >> J;
    
    // 초기화
    l = 1; r = M; cnt = 0;
    
    for (int i = 0; i < J; i++){
        int apple;
        cin >> apple;

        // 범위 안이라서 움직일 필요 없다.
        if (apple >= l && apple <= r) continue;
        
        // 왼쪽에 가까우면 왼쪽으로 이동 오른쪽에 가까우면 오른쪽으로 이동
        int leftLength = abs(l - apple);
        int rightLength = abs(r - apple);
        bool isLeft = leftLength < rightLength ? true : false;

        if (isLeft){
            l -= leftLength;
            r -= leftLength;
            cnt += leftLength;
        }
        else{
            l += rightLength;
            r += rightLength;
            cnt += rightLength;
        }    
    }

    cout << cnt;

    return 0;
}

제가 만든 로직대로라면 절대로 경계값을 벗어날 수가 없습니다.
왜냐하면 문제에서 "각 사과는 N칸중 한 칸의 상단에서 떨어지기 시작하며" 라고 주어져 있기 때문입니다.

67%에서 틀렸다고 나옵니다..!

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
요가인님의 프로필 이미지
요가인

작성한 질문수

질문하기