문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
해커 랜드 기업은 새로운 바이럴 광고 전략을 채택하고 있다. 새로운 제품을 발표 했을 때, 소셜 미디어로 정확하게 5명의 사람들에게 광고한다.
첫째 날, 5명의 절반(floor(5 / 2) = 2)이 광고를 좋아하고, 그들의 친구 3명에 각각 공유한다. 둘째 날이 시작할때, floor(5 / 2) x 3 = 2 x 3 = 6명의 사람들이 광고를 받는다.
날마다 광고를 받은 사람들의 절반이 광고를 좋아하고 같은 날 세명의 친구들에게 공유한다. 광고가 같은 사람에게 두 번 전달되지 않는다고 할 때, 시작하는 날을 첫째 날로 하고 얼마나 많은 사람들이 주어진 날까지 좋아하는지 구해라.
n = 5
Days | Shared | Linked | Cumulative |
---|---|---|---|
1 | 5 | 2 | 2 |
2 | 6 | 3 | 5 |
3 | 9 | 4 | 9 |
4 | 12 | 6 | 15 |
5 | 18 | 9 | 24 |
위는 진행 과정을 보여준다. 5일째 되는 날의 좋아요 누적 수는 24이다.
viralAdvertising 함수를 완성해라.
viralAdvertising 함수는 아래와 같은 매개변수를 가지고 있다.
liked, shared, cumulative 변수 선언을 하고, liked는 0, shared는 5, cumulative는 0을 할당한다.
int liked = 0;
int shared = 5;
int cumulative = 0;
반복문을 통해 1부터 n까지 반복한다. 이때 i는 진행 일수한다. 그리고 liked는 shared / 2, shared는 liked * 3, cululative는 liked를 계속 더해준다.
for(int i = 1; i <= n; i++){
liked = shared / 2;
shared = liked * 3;
cumulative += liked;
}
마지막으로 cumulative를 반환한다.
return cuumlative;
public static int viralAdvertising(int n) {
int liked = 0;
int shared = 5;
int cumulative = 0;
for(int i = 1; i <= n; i++){
liked = shared / 2;
shared = liked * 3;
cumulative += liked;
}
return cumulative;
}