나 개발자 진짜 되냐?

코딩테스트 입문 - 세균 증식 ( pow, << ) 본문

프로그래머스를 풀어보아요!/C++

코딩테스트 입문 - 세균 증식 ( pow, << )

Snow Rabbit 2026. 5. 26. 20:27

 

 

인생은 타이밍이라고 했다.

떠난 버스는 다시 돌아오지 않는다.

 

한번은

버스가 떠날까봐 어쩔줄 몰랐을때가 있었다.

 

그때의 그 감정을 잊을수가 없다.

 

하루의 절반이 고민인 나인데

그때는 크게 고민할 새도 없었다.

 

버스가 떠날까봐

..

 

그래서 그 버스를 탔을땐

내려야하는데 내리지 않고 한바퀴 돌았던 기억이 있다.

 


 

이문제는 사실 그렇게 어렵지않았다.

 

for문으로 *2만 해주면 되는걸?!

 

하지만 다 풀고

다른 사람의 문제들을 보고 느꼈다.

 

더 쉽고 간단하게 풀 수 있는 방법이 많다는것을..

 

그래서 공부 겸 공유해보고자 한다.

 


pow

#include <cmath> 라이브러리에 들어있는 수학 함수

 

Power로 거듭제곱의 약자이다.

pow(밑, 지수)

로 쓰고

pow(2,3)으로하면

2의 세제곱으로 8이 나온다.

 

이 문제에서는 한시간에 2배씩 늘어나니까

n * pow(2,t)가 된다.

 


 

하지만! pow의 경우 double로 돌려주기 때문에

미세한 오차가 생길 수도 있다.

 

그래서 2의 거듭제곱을 사용할땐

쉬프트 연산자를 선호할 때도 있다.

 

숫자를 두배씩 키울때에는 

<<

을 쓴다.

컴퓨터는 2진수여서 한칸씩 미룰때마다 2씩 늘어난다.

 

그래서

예를들어 3은 이진수로 11 이다.

여기다가

3 << 1

을 해주면,

한칸씩 밀리고 빈공간에는 0을 넣게 된다.

그러면 110

계산하면 6이다

3*2 한 값이랑 같다.

 

즉 << t해주면

t만큼 이동한거고

2의 t승만큼 곱하는 것이 된다.

 

그 뒤에 앞에 n을 붙이면

n * 2^t 랑 같은 식이 된다.

 

 

아!!

숫자를 반으로 나눌때엔

>>

을 쓴다.

 

반대인 셈!

 

 

 

이건 내 무난한 식..^^

 


 

 

pow와 <<를 배워봤다

>> << 이건 여전히 헷갈린다.

cin >> 이것도 가끔 틀리는데 말이다..ㅎㅋ

 

고생했다.