[HackerRank/C++] Halloween Sale

2023. 2. 7. 07:51코딩테스트 해커랭크/Algorithms -Easy

기본 가격 p, 할인 가격 d, 최소 가격 m, 소지금 s이 있다

 

처음 가격 p 에서 물건을 한개 살때마다 d만큼 가격이 내려가 최소 m까지 가격이 떨어진다

 

s의 소지금이 있을때 살 수 있는 물건의 수를 return 한다

int howManyGames(int p, int d, int m, int s)
{
    int result = 0;
    
    while (p > m)
    {
        s -= p;
        if (s < 0)
            return result;
        ++result;
        p -= d;
    }
    
    result += s / m;
    
    return result;
}

 

기본 가격인 p > 최소금액 m 일때만 반복문을 실행한다

 

매 실행마다 현재 소지금 s에서 현재 가격 p만큼을 감소 시킨 후, 현재 소지금 s가 0보다 적다면 result를 증가시키지 않고 return 한다

 

그게 아니라면 result를 증가 시키고, p에서 d만큼을 감소시킨다

 

반복문 종료 후 남은 소지금에서 최소가격인 m을 나눈값만큼 더해주고 return 한다