public class ExerciseMachine {
public int getPercentages(String time) {
int total = Integer.parseInt(time.substring(0, 2)) * 60 * 60
+ Integer.parseInt(time.substring(3, 5)) * 60
+ Integer.parseInt(time.substring(6, 8));
int count = 0;
for (int i = 1; i <= 99; i++)
if (total*i % 100 == 0)
count++;
return count;
}
}
Problem
매초마다 운동 기구에 있는 펌웨어의 함수가 호출되고 이 함수는 전체 운동량의 퍼센트를 출력해야 한다. 운동 기구의 화면은 소수점을 표시하지 못하므로 소수점이 붙지 않는 퍼센트만 출력해야 한다. 기구는 0% 또는 100%를 출력해서는 안된다.
Explanation
매초마다 workout time에 대한 퍼센트를 출력한다. %에 소수점(decimal point)이 붙으면 출력하지 않는다. 따라서 1%, 2%, ... , 100% 로 출력하게 되고 각 퍼센트가 소수점이 나온다면(0.1%, 0.01% 등등) 해당 값은 출력할 수가 없다. %값을 얻으려면 1/100을 곱해줘야 한다. 즉, 소수점 둘째자리(0.00)가 최대이므로 mod 100을 해 나머지가 0이면 출력한다.
위 코드의 공식은 gdd(s,100) - 1이다.
References
최근 덧글