[BOJ 19636] 요요 시뮬레이션

View as PDF

Submit solution

Points: 2
Time limit: 1.0s
Memory limit: 1G

Problem type
Allowed languages
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text

데시는 D일 동안 다이어트를 하기로 결심했다.</p>

다이어트 전 데시의 체중은 W0 g, 일일 에너지 섭취량 I0 Kcal, 일일 기초 대사량은 일일 에너지 섭취량과 같은 I0 Kcal이다. 데시는 운동을 하지 않아 일일 활동 대사량 A0은 0 Kcal이다.

다이어트 기간, 데시는 일일 에너지 섭취량과 일일 활동 대사량을 바꿀 것이다(물론 다이어트 전과 같을 수도 있다). 데시의 다이어트 기간 일일 에너지 섭취량은 I Kcal, 다이어트 기간 일일 활동 대사량은 A Kcal이다.

다이어트를 하는 동안 데시의 체중과 일일 기초 대사량은 변화한다. 단, 데시의 신체 구조는 매우 단순하여 체중과 일일 기초 대사량은 각각 하루에 단 한 번만 변화한다.

체중은 (일일 에너지 섭취량 − 일일 에너지 소비량) g/Kcal만큼 더해진다고 가정한다. 일일 에너지 소비량은 일일 기초 대사량과 일일 활동 대사량을 더한 값이다.

(일일 에너지 섭취량 − 일일 에너지 소비량) 의 절댓값이 기초 대사량 변화 역치 T Kcal 초과라면, 일일 기초 대사량은 ⌊ (일일 에너지 섭취량 − 일일 에너지 소비량) / 2 ⌋ 만큼 더해진다. 일일 기초 대사량 변화는 같은 날의 체중 변화 다음에 일어난다.

단, 아래에 해당하면 데시는 사망한다.

  • 체중이 0 g 이하인 경우
  • 일일 기초 대사량이 0 Kcal 이하인 경우

D일 간의 다이어트가 끝난 후, 일일 기초 대사량의 변화를 고려하지 않았을 때와 일일 기초 대사량의 변화를 고려했을 때 각각의 예상 체중과 일일 기초 대사량을, 그리고 다이어트 전 데시의 원래 생활로 돌아간다면 몸무게가 증가하는 요요 현상이 일어날지 계산해주자.

입력 형식

첫 번째 줄에는 데시의 다이어트 전 체중 W0 (1 ≤ W0 ≤ 107), 다이어트 전 일일 에너지 섭취량 및 일일 기초 대사량 I0 (1≤ I0 ≤ 105), 기초 대사량 변화 역치 T (1 ≤ T ≤ 1,000)가 빈칸을 사이에 두고 주어진다.</p>

두 번째 줄에는 데시의 다이어트 기간 D (1 ≤ D ≤ 1,000), 다이어트 기간 일일 에너지 섭취량 I (0 ≤ I ≤ 105), 다이어트 기간 일일 활동 대사량 A (0 ≤ A ≤ 105)가 빈칸을 사이에 두고 주어진다.

입력으로 주어지는 모든 수는 정수이며, 단위는 지문에서 언급한 단위를 따른다. 다이어트 동안 체중이 오히려 증가하는 경우는 입력으로 주어지지 않는다.

출력 형식

첫 번째 줄에는 일일 기초 대사량의 변화를 고려하지 않았을 때의 다이어트 후 예상 체중과 일일 기초 대사량을 출력한다. 일일 기초 대사량 변화를 고려하지 않았으므로 다이어트 전 일일 기초 대사량을 그대로 출력하면 된다. 만약 다이어트 도중 데시의 사망이 예상되는 경우 체중과 일일 기초 대사량 대신 Danger Diet</code></span>를 출력한다.</p>

두 번째 줄에는 일일 기초 대사량의 변화를 고려했을 때의 다이어트 후 예상 체중과 일일 기초 대사량을 출력하고, 변화한 일일 기초 대사량을 가지고 다이어트 전 일일 에너지 섭취량과 다이어트 전 일일 활동 대사량으로 돌아갔을 때 체중이 증가하는 요요 현상이 발생하는 경우 YOYO</code></span>, 발생하지 않는 경우 NO</code></span>를 출력한다. 만약 다이어트 도중 데시의 사망이 예상되는 경우 체중과 일일 기초 대사량, 요요 발생 여부 대신 Danger Diet</code></span>를 출력한다.

예제 입력 1

100000 1500 500
5 1000 700

예제 출력 1

94000 1500
97300 600 YOYO

예제 입력 2

100000 1500 500
5 1300 300

예제 출력 2

97500 1500
97500 1500 NO

예제 입력 3

10000 2000 500
5 500 500

예제 출력 3

Danger Diet
5500 500 YOYO

예제 입력 4

100000 1500 500
5 0 500

예제 출력 4

90000 1500
Danger Diet

힌트

</p>

다이어트 전 체중 W0이 100,000g, 일일 에너지 섭취량 I0이 1,500 Kcal인 경우, 다이어트 전 일일 기초 대사량은 일일 에너지 섭취량과 같은 1500 Kcal이다.

데시는 운동을 하지 않으므로 다이어트 전 일일 활동 대사량 A0은 0 Kcal이다.

일일 에너지 소비량은 일일 기초 대사량과 활동 대사량을 더한 값이므로 1,500 + 0 = 1,500 Kcal이다.

데시는 일일 에너지 섭취량은 1,000 Kcal, 일일 활동 대사량은 700 Kcal로 바꾸는 다이어트를 5일 동안 할 것이다.

일일 에너지 소비량은 일일 기초 대사량과 일일 활동 대사량을 더한 값이므로 1,500 + 700 = 2,200 Kcal가 된다.

체중은 (일일 에너지 섭취량 − 일일 에너지 소비량) g/Kcal만큼 더해진다. 따라서 체중은 1,000 − 2,200 = −1,200 g만큼 더해져, 다이어트 1일 차의 최종 체중은 98,800 g이 된다.

일일 기초 대사량은 (일일 에너지 섭취량 − 일일 에너지 소비량) 의 절댓값이 기초 대사량 변화 역치 T Kcal 초과일 때 변화한다. (1,000 − 2,200) Kcal의 절댓값 1,200 Kcal은 기초 대사량 변화 역치인 500 Kcal을 초과하므로, 일일 기초 대사량은 ⌊ (일일 에너지 섭취량 − 일일 에너지 소비량) / 2 ⌋ 만큼 더해진다. 다이어트 1일 차의 최종 일일 기초 대사량은 900 Kcal가 된다. 이때, 음수의 나눗셈은 언어마다 다를 수 있으므로 주의한다. ⌊−5 / 2⌋ 의 값은 −3이다. 자신이 사용하는 언어에서 −3이 나오는지 확인을 해보자.

이를 5일 동안 반복하면 기초 대사량의 변화를 고려한 데시의 다이어트 후 체중은 97,300 g, 일일 기초 대사량은 600 Kcal가 된다.


Comments

There are no comments at the moment.