inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

질문있습니다

18

요가인

작성한 질문수 35

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%에서 틀렸다고 나옵니다..!

답변 0

Issuance 테이블에 status, couponId 인덱스가 꼭 필요할까요?

2

24

1

상금은 언제 받을 수 있나요?

2

35

0

화면 깜박임 현상

2

61

1

17강 강의에 목데이터 첨부파일이 없습니다.

2

68

2