코딩테스트/HackerRank

[HackerRank] Drawing Book 📌

주니어주니 2023. 4. 8. 21:54

 

문제 

 

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);
}

 

저걸 삼항연산자로 더 줄일 수 있었네욤 ....