코딩테스트/프로그래머스

[프로그래머스] 세균 증식 (Level 0, JavaScript)

방혜진 2024. 8. 12. 12:54

❗ 문제

출처: 프로그래머스 코딩 테스트 연습,

https://school.programmers.co.kr/learn/courses/30/lessons/120910

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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

 

 

❓ 나의 풀이

function solution(n, t) {
    return n*Math.pow(2, t)
}

Math.pow 메서드를 이용해서 문제를 풀었다.

 

테스트 케이스

 

처음 마리수 2마리에서 1시간에 2배씩 증가한다고 했으니까

1시간 후 = 2마리,

2시간 후 = 4마리,

3시간 후 = 8마리,

. . .

9시간 후 = 1024마리,

10시간 후 = 2048마리가 된다.

 

이 문제에서 포인트는 시간당 2배씩 증가한다는 점이다. 이 말을 공식으로 적어보면 2^t 가 된다는 것이다.

 

++) 왜 2^t 가 되는걸까?

2^t 를 하나씩 계산해보면

2^1 = 2,

2^2 = 4,

2^3 = 8,

. . .

2^9 = 512,

2^10 = 1024가 된다.

 

위에 1시간 후,, 2시간 후,, 이렇게 계산한 결과값이랑 동일한 결과값이 나오는 것을 확인할 수 있다.

여기에 n 값을 곱해주면 최종적으로 우리가 원하는 값을 구할 수 있다.

 

공식으로 만들면 n*(2**t) 가 되는데, 코드를 좀 더 깔끔하게 적기 위해서 Math.pow 메서드를 사용했다.

Math.pow 는 2개의 인자를 받는다.

Math.pow(a, b)

첫 번째 인자: 밑(base)

두 번째 인자: 지수(exponent)

n*(2**t)  이 코드를 Math.pow 를 사용하면 n*Math.pow(2, t) 이렇게 적을 수 있다.

 

++) Math.pow()

밑(base)이 음수이고, 지수(exponent)값이 정수가 아닌 경우, NaN을 반환한다.