본문 바로가기

Algorithm, Data structure/프로그래머스

Programmers - 세균 증식과 비트 연산자(Javascript)

본인의 풀이 :

 

Math.pow 함수를 이용하여 

 

문제 : n마리의 세균이 한시간마다 두배씩 증가한다.

 

t시간후 세균의 수는?

 

본인의 풀이 : 

 

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

 

간-단 하게 풀었다. 그러나 보통의 자바스크립트 개발자들이 거의 쓰지 않는

비트 연산자 중 왼 시프트 연산자로 굉~장히 쉽게 푼 사례가 있더라.

 

왜냐면 이게 매 시간마다 2배가 늘어난다고 했으니...

 

예를들어

 

const num = 4 << 1 이라고 하면

 

이진수 0100 의 수를 왼쪽으로 1칸씩 땡긴다는 소리다.

결과는 1000(2) 가 나오고 10진수로 바꾸면 8.

 

반대로 >> 연산자를 쓰면 한칸씩 오른쪽으로 이동하는 것이다.

 

사실 자바스크립트로 개발하면서

비트연산자를 사용할일은 거의 없을것 같지만,

 

2배 관련 연산에서는 매우 막강한 위력이 있을것 같다

(연산속도 자체도 빠를것 같고...)