문제풀이/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
반응형