❗ 문제
출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/courses/30/lessons/120910
어떤 세균은 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을 반환한다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 자연수 뒤집어 배열로 만들기 (Level 1, JavaScript) (0) | 2024.08.30 |
---|---|
[프로그래머스] 약수의 합 (Level 1, JavaScript) (0) | 2024.08.27 |
[프로그래머스] 7의 개수 (Level 0, JavaScript) (0) | 2024.08.05 |
[프로그래머스] 커피 심부름 (Level 0, JavaScript) (0) | 2024.07.31 |
[프로그래머스] 모음 제거 (Level 0, JavaScript) (0) | 2024.07.30 |