[HackerRank/C++] Viral Advertising

2023. 2. 6. 08:09코딩테스트 해커랭크/Algorithms -Easy

해커랜드는 새로운 마케팅 기법을 사용한다

 

첫날에는 5명의 사람들에게 공유를 할 것이며 그중 절반의 사람들이 좋아요를 누를 것이고 나머지는 읽지도 않는다

 

좋아요를 누른 사람들은 다시 3명의 사람들에게 공유를 할 것이며 마찬가지로 절반의 사람들이 좋아요를 누를 것이다

 

n일이 지났을때 몇명의 사람들이 읽었는지 return한다

int viralAdvertising(int n)
{
    int result = 2;
    
    int shared = 5;
    int liked = 2;
    
    for (int i = 1; i < n; ++i)
    {
    shared = liked * 3;
    liked = shared / 2;
    result += liked;
    }
    
    return result;
}

첫 날에는 3명이 아닌 5명이므로 초기값은 1일로 초기화 하는게 편하다고 생각한다

 

shared 받은 사람들은 liked를 누른 사람의 * 3일 것이다

 

shared 받은 사람들의 절반이 liked를 다시 누를 것이고

 

결국 총 누른 사람들의 수는 liked를 누른 사람들의 총 합이 되므로 result에 liked를 누적시키고 return 해준다