Jumping on the Clouds: Revisited | HackerRank
Jumping on the Clouds: Revisited | HackerRank
Determine the amount of energy a character has after the cloud game ends.
www.hackerrank.com
<문제>


input: 첫번째 줄에는 총 구름의 개수 n과 점프하는 거리 k를 입력받는다.
두번째 줄에는 구름의 개수만큼 thunderhead가 있는 구름과 없는 구름을 배열로 입력받는다.
만약 thunderhead가 있으면 1, 없으면 0으로 입력한다.
thunderhead를 밟으면 에너지가 2만큼 더 필요하다.
그냥 구름을 밟으면 점프 한 번 당 에너지가 1 필요하다.
output: 0번째 구름에 돌아왔을 때, 남은 에너지의 값을 리턴한다.
<코드>
int jumpingOnClouds(int c_count, int* c, int k) {
int index = k % c_count, energy = 100 - (c[index] * 2 + 1);
while(index != 0)
{
index = (index + k) % c_count;
energy -= c[index] * 2 + 1;
}
return energy;
}
<풀이>
먼저 첫번째 시작하는 인덱스를 구하기 위해 index 변수를 선언하고, 점프 거리 k값을 c_count로 나눈 나머지를 index에 저장했다. 필요한 에너지 식은 문제에서 나왔듯이 c[index]*2+1이고, 총 에너지 100에서 이만큼을 빼야 현재 남은 에너지 값을 구할 수 있으므로 energy 변수에 그 값을 입력한다. index값이 0이 되면 식이 종료되는 조건식을 만들고, index값은 index+k하여 한 번 점프하고, 이를 구름의 개수 c_count로 나눈 나머지를 입력한다. 에너지는 현재 에너지에서 한 번 점프하는 데 필요한 에너지만큼 빼면 된다. 마지막으로 energy를 리턴하여 문제를 풀 수 있었다.
<실행결과>

'c언어 스터디 > HackerRank' 카테고리의 다른 글
| [HackerRank] Search- Sherlock and Array (0) | 2021.09.18 |
|---|---|
| [HackerRank] Search- Missing Numbers (0) | 2021.09.11 |
| [HackerRank] Counting Valleys (0) | 2021.08.28 |
| [HackerRank] Get Node Value (0) | 2021.08.28 |
| [HackerRank] Cycle Detection (0) | 2021.08.21 |