반응형
▷ 문제 : Drawing Book (Easy)
▷ 해결 날짜 : 2022.04.21
▷ 소요 시간 : 20분
▷ 풀이 과정 :
문제가 너무 쉬웠으나, 단순 반복문으로 풀기 싫어서 고민을 좀 해봤다.
문제는 매개변수로 마지막 페이지 넘버와, 사용자가 원하는 페이지 넘버가 주어지고
그럴 경우 앞에서부터 원하는 페이지로 넘기거나 뒤에서부터 원하는 페이지까지 넘겼을 때 적은 횟수로 넘기는 방법을 찾는 것이다.
그림 이미지가 주어지는데 진짜 그냥 책을 생각하면 된다. 책을 펼치면 왼쪽 오른쪽 두 페이지가 존재하는데,
이 성질을 이용하면 굳이 반복문 없이 문제 해결이 가능하다.
결국 주어진 페이지 번호 / 2를 해주면 그 페이지가 몇 번째 장인지 알 수 있다.
▷ 구현
function pageCount(n, p) {
let lastPage = Math.floor(n / 2);
let wantPage = Math.floor(p / 2);
return Math.min(wantPage, lastPage - wantPage);
}
▷ 복기 :
반복문 말고도 쉽게 풀 수 있는 방법이 있는지 계속해서 고민해보자.
이런 습관을 들여야 어느 플랫폼에서든지 효율성 시간 복잡도에서 만점이 나올 수 있다.
반응형
댓글