Javascript-level : 코딩테스트 입문 - 피자 나눠 먹기 (1)

HS K·2023년 1월 20일
0
post-custom-banner

문제설명

머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.

제한사항

1 ≤ n ≤ 100

내가 쓴 답

function solution(n) {
    let i = i+1 
    let k = n/7
    if (k=<i) {
        return i 
    }
    else if(k>i) {
        return i+1
    }
    }
}
  • 식을 어떻게 작성해야할지 감이 오지않아 논리의 흐름만 썼다. 나눈 결과값에 따라서 1이상이 되면 i값을 그대로 반환하고, 그렇지 않으면 i에 +1을 시켜 하나씩 계산을 하는 반복문을 돌리고 싶었지만, 변수가 2개(n,i)라서 이걸 어떻게 같이 다뤄야할지 막막했다.

여러종류의 풀이 보기

1번

function solution(n) {

    1 <= n <= 100;

    let pizza = 7;
    let result = pizza;

    if(n > result) {
        for(let i = 0; i < (n / pizza) - 1; i++) {
            result += pizza;
        }
    };


    var answer = result / 7;
    return answer;
}

2번

function solution(n) {
    return n % 7 === 0 ? n / 7 : parseInt(n / 7) + 1;
}

3번

function solution(n) {
    return ~~(n / 7) + (n % 7 ? 1 : 0);
}
  • 그런데 여기에서 ~~를 처음봤다. 이게 무슨 기호인지 찾아보려고 했으나, 검색엔진에 키워드가 잡히지 않아 찾는데 꽤나 애먹었다. -_-
    그래도 어떻게 찾은 덕분에 알게된건데, ~는 비트 연산자라고 한다.
    이름은 NOT 이며 모든 비트를 뒤바꾼다고 한다.

예시

제목내용
500000000000000000000000000000101
~511111111111111111111111111111010 (-6)

(원리)
MDN 에 따르면 bitwise not을 사용하면 x는 -(x+1)을 반환하고, 소수점을 모두 버린다고 한다. 그래서 2번 중첩해서 사용하면 소수점을 버린 상태가 된다.

// 3.5 -> -4 -> 3
const a = 3.5

console.log(~a) // -4

console.log(~~a) // 3

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_NOT

https://www.w3schools.com/js/js_bitwise.asp

https://velog.io/@skyepodium/JS-정수-나눗셈-몫-구하기

후기

풀이를 생각해내는 논리적 과정을 사고의 전환을 통해 좀 더 간단하게 할 수 있다는 가능성에 생각을 열어두어야 한다. 아직 논리력이 부족하다는 것을 알 수 있었다.

profile
주의사항 : 최대한 정확하게 작성하려고 하지만, 틀릴내용이 있을 수도 있으니 유의!
post-custom-banner

0개의 댓글