[프로그래머스] Lv.0 - 세균 증식

·2023년 3월 28일
0

Programmers

목록 보기
9/30
post-thumbnail

✨ 문제설명

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

🔥 제한사항

  • 1 ≤ n ≤ 10
  • 1 ≤ t ≤ 15

입출력 예


🌟 풀이

✅ 내 풀이

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

n의 값을 answer에 넣어준 후, t의 수만큼 반복문을 돌며 answer = answer x 2를 한다. 분명 더 좋은 방법이 있을 것이라고 생각했다..!


✅ 다른 사람 풀이 1

function solution(n, t) {
  return n << t;
}

2진수임을 알아채고 비트를 이동시키는 시프트 연산자를 사용했다.
n의 위치에서 t만큼 왼쪽으로 이동하는 것이다.

solution(2, 10)을 예로 들어보면 다음 이미지와 같다.
시프트연산예제


✅ 다른 사람 풀이 2

function solution(n, t) {
  while (t-- > 0) n *= 2;
  return n;
}

반복문을 돌리며 t의 수를 하나씩 줄여가고, n = n x 2를 해준다.
t가 더이상 0보다 크지 않을 때 반복문이 멈춘다.


✅ 다른 사람 풀이 3

function solution(n, t) {
  return n * 2 ** t;
}

📌 Math.pow(base, exponent) : base에 exponent를 제곱한 값을 반환하며, base ** exponent와 같다.
base 밑 값
exponent 밑 을 제곱하기 위해 사용하는 지수.

profile
🎨

0개의 댓글