문제
n = 전체 페이지 수
p = 펼치려는 페이지 번호
1페이지가 항상 오른쪽 페이지에 있을 때,
앞에서부터 펼칠 때와 뒤에서부터 펼칠 때 중 넘기는 페이지가 가장 작은 수 반환
내 풀이
n이랑 p를 1부터 다 적어가면서 뭔가 규칙은 찾았는데
앞에서부터 넘길 때는 p/2 라는 규칙은 찾았는데
뒤에서부터 넘길 때는 뭔가 p가 짝수일 때와 홀수일 때가 구분된다는 건 찾았지만 그걸 어떻게 구현해야되는지 도저히 풀 수가 없어서 찾아봤다..... ㅠ
public static int pageCount(int n, int p) {
// 앞에서부터는 항상 p/2
int fromFront = p/2;
// 뒤에서부터는 p가 짝수일 때와 홀수일 때 구분
int fromBack = 0;
if(p%2 == 0) {
fromBack = (n - p)/2;
} else {
fromBack = (n - p + 1)/2;
}
return Math.min(fromFront, fromBack);
}
저걸 삼항연산자로 더 줄일 수 있었네욤 ....
'코딩테스트 > HackerRank' 카테고리의 다른 글
[HackerRank] Between Two Sets 📌 (여러 수 최대공약수, 최소공배수) (0) | 2023.04.10 |
---|---|
[HackerRank] Palindrome Index(투포인터) 📌 (1) | 2023.04.09 |
[HackerRank] Recursive Digit Sum 📌 (0) | 2023.04.07 |
[HackerRank] Sherlock and Array 📌 (0) | 2023.04.07 |
[HackerRank] Grid Challenge 📌 (1) | 2023.04.07 |