[HackerRank] Viral Advertising

아르당·2023년 11월 9일
0

HackerRank

목록 보기
14/109
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

문제

해커 랜드 기업은 새로운 바이럴 광고 전략을 채택하고 있다. 새로운 제품을 발표 했을 때, 소셜 미디어로 정확하게 5명의 사람들에게 광고한다.
첫째 날, 5명의 절반(floor(5 / 2) = 2)이 광고를 좋아하고, 그들의 친구 3명에 각각 공유한다. 둘째 날이 시작할때, floor(5 / 2) x 3 = 2 x 3 = 6명의 사람들이 광고를 받는다.
날마다 광고를 받은 사람들의 절반이 광고를 좋아하고 같은 날 세명의 친구들에게 공유한다. 광고가 같은 사람에게 두 번 전달되지 않는다고 할 때, 시작하는 날을 첫째 날로 하고 얼마나 많은 사람들이 주어진 날까지 좋아하는지 구해라.

Example

n = 5

DaysSharedLinkedCumulative
1522
2635
3949
412615
518924

위는 진행 과정을 보여준다. 5일째 되는 날의 좋아요 누적 수는 24이다.

Function Description

viralAdvertising 함수를 완성해라.
viralAdvertising 함수는 아래와 같은 매개변수를 가지고 있다.

  • int n: 보고 싶은 해당 일자

Return

  • int: 해당 일의 누적 좋아요 수

Constraints

  • 1 <= n <= 50

풀이

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;
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글