Coding 🖐🏻/javascript

JS | 세균증식 for 문 , 이진수 사용

김가마 2023. 3. 23. 23:10

어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n 과 경과한 시간 t 가 매개변수로 주어질 때 t 시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.

 

👇🏻내가 풀고 싶었던 방식

 

function solution(n, t) {
  for (let i = 0; i < t; i++) {
    result *= 2;
  }
  return result;
}

해당 문제는 각 시간마다 2배 씩 증가하는 지수 함수의 값을 계산하는 것으로 이해하면 된다

따라서 주어진 시간에 따라 2를 몇 번 곱해야하는지를 계산하여 최종 값을 도출 할 수 있다.

입력값 (n,t) 2개의

위 코드는 주어진 입력값 n 과 t 에 대하여 해당 문제의 해답을 반환하는 함수 **solution**을 구현한 것입니다. result 변수에 초기값으로 **num**을 할당하고, for 반복문을 사용하여 **hour**만큼 반복하면서 **result**에 2를 곱해줍니다. 마지막으로 result 값을 반환합니다.

 

 

이진수를 사용한 다른 사람 방식 접근 코드

 

function solution(n, t) {
  return n << t;
}
i 0부터 시작하면 -1부터 시작하면 t+1 t 시작하고
이 함수는 주어진 n 값을 2의 거듭제곱으로 t 번 곱한 결과를 반환합니다.
함수는 먼저 for 루프를 사용하여 i 변수를 1부터 t+1까지 반복
각 반복에서 n은 2로 곱해집니다
즉, 첫 번째 반복에서 n은 n * 2가 되고,
 두 번째 반복에서 n은 n * 2 * 2가 됩니다. 
이런 식으로 t번 반복하면 n은 2의 거듭제곱으로 t 번 곱해진 값이 됩니다.

마지막으로, 함수는 곱셈 결과인 n을 반환합니다.

이 함수는 주어진 n 값을 t 만큼 왼쪽 시프트(shift) 연산한 결과를 반환합니다.

왼쪽 시프트 연산은 이진수의 비트를 왼쪽으로 이동시키는 연산입니다. 예를 들어, n이 10이고 t가 2라면, 이진수로 10은 1010입니다. 이진수의 비트를 왼쪽으로 2번 이동하면 101000이 되는데, 이 값은 10을 2의 2승(4)으로 곱한 값과 같습니다.

따라서, 이 함수는 n 값을 **t**번 왼쪽 시프트하여 2의 거듭제곱으로 **t**번 곱한 값을 반환합니다.