Test/Python(20220101~)

프로그래머스.L0.세균증식

kiostory 2022. 10. 10. 14:16

문제 설명

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


제한사항
  • 1 ≤ n ≤ 10
  • 1 ≤ t ≤ 15

 

입출력 예
n  :  t  :  result
2 10 2048
7 15 229,376

입출력 예 설명

입출력 예 #1

  • 처음엔 2마리, 1시간 후엔 4마리, 2시간 후엔 8마리, ..., 10시간 후엔 2048마리가 됩니다. 따라서 2048을 return합니다.

입출력 예 #2

  • 처음엔 7마리, 1시간 후엔 14마리, 2시간 후엔 28마리, ..., 15시간 후엔 229376마리가 됩니다. 따라서 229,376을 return합니다.

 

* 첫 번째 생각

def solution(n, t):
    answer = n
    for _ in range(t):
        answer *= 2
    return answer

한 시간에 2배니까 answer = answer * 2배

 

 

* 두 번째 생각

def solution(n, t):
    return n*2**t

첫 번째 생각에서, 결국 answer = answer * 2 를 t번 반복

answer = n이라고 했으므로, n * 2 ** t

 

비트 쉬프트로 왼쪽이면 2배씩 증가, 오른쪽이면 1/2배씩 감소이므로

n << t로도 표현할 수 있겠다네....

def solution(n, t):
    return n<<t