문제풀이/C

[Hackerrank] Drawing Book

vision333 2020. 11. 8. 09:50
728x90

문제

선생님이 학급에게 책을 페이지 번호로 열도록 요청한다.

학생은 책의 앞면이나 뒷면에서 페이지 넘기기를 시작할 수 있다.

항상 한 번에 한 페이지 씩 넘기고,  책을 열면 1페이지는 항상 오른쪽에 있습니다.

가장 적게 페이지를 넘기는 횟수를 알아내자.


풀이

첫페이지가 반드시 오른쪽에 위치하므로, 2로 나눴을 때 몫을 이용해서 풀 수 있다.

이동 전과 후의 쪽 수를 받아서, 두 페이지의 차를 구하면 된다.

그 차이를 비교해서 앞으로 넘길 때와 뒤로 넘길 때의 경우를 나눠주면 된다.

 

코드

int pageCount(int n, int p) {
    // n : 이동 전 페이지, p : 이동 후 페이지
    // 책을 폈을 때 두 페이지가 보임
    // n/2 : 이동 전 쪽 수, p/2 : 이동 후 쪽 수
    
    int min = (n/2)-(p/2); // 뒤로 넘기는 경우
    if(min>(p/2)){ // 앞으로 넘기는 경우
        min = p/2;
    }
    return min;
}

결과

728x90
반응형