๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœจ Algorithm

[๋ฐฑ์ค€/C++] 19636๋ฒˆ : ์š”์š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜

by nitronium102 2021. 9. 12.

๋ฌธ์ œ

๋ฐ์‹œ๋Š” D์ผ ๋™์•ˆ ๋‹ค์ด์–ดํŠธ๋ฅผ ํ•˜๊ธฐ๋กœ ๊ฒฐ์‹ฌํ–ˆ๋‹ค.

๋‹ค์ด์–ดํŠธ ์ „ ๋ฐ์‹œ์˜ ์ฒด์ค‘์€ 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)๊ฐ€ ๋นˆ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค.

๋‘ ๋ฒˆ์งธ ์ค„์—๋Š” ๋ฐ์‹œ์˜ ๋‹ค์ด์–ดํŠธ ๊ธฐ๊ฐ„ D (1 ≤ D ≤ 1,000), ๋‹ค์ด์–ดํŠธ ๊ธฐ๊ฐ„ ์ผ์ผ ์—๋„ˆ์ง€ ์„ญ์ทจ๋Ÿ‰ I (0 ≤ I ≤ 105), ๋‹ค์ด์–ดํŠธ ๊ธฐ๊ฐ„ ์ผ์ผ ํ™œ๋™ ๋Œ€์‚ฌ๋Ÿ‰ A (0 ≤ A ≤ 105)๊ฐ€ ๋นˆ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค.

์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋ชจ๋“  ์ˆ˜๋Š” ์ •์ˆ˜์ด๋ฉฐ, ๋‹จ์œ„๋Š” ์ง€๋ฌธ์—์„œ ์–ธ๊ธ‰ํ•œ ๋‹จ์œ„๋ฅผ ๋”ฐ๋ฅธ๋‹ค. ๋‹ค์ด์–ดํŠธ ๋™์•ˆ ์ฒด์ค‘์ด ์˜คํžˆ๋ ค ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.

์ถœ๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ์ผ์ผ ๊ธฐ์ดˆ ๋Œ€์‚ฌ๋Ÿ‰์˜ ๋ณ€ํ™”๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜์„ ๋•Œ์˜ ๋‹ค์ด์–ดํŠธ ํ›„ ์˜ˆ์ƒ ์ฒด์ค‘๊ณผ ์ผ์ผ ๊ธฐ์ดˆ ๋Œ€์‚ฌ๋Ÿ‰์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ผ์ผ ๊ธฐ์ดˆ ๋Œ€์‚ฌ๋Ÿ‰ ๋ณ€ํ™”๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๋‹ค์ด์–ดํŠธ ์ „ ์ผ์ผ ๊ธฐ์ดˆ ๋Œ€์‚ฌ๋Ÿ‰์„ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค. ๋งŒ์•ฝ ๋‹ค์ด์–ดํŠธ ๋„์ค‘ ๋ฐ์‹œ์˜ ์‚ฌ๋ง์ด ์˜ˆ์ƒ๋˜๋Š” ๊ฒฝ์šฐ ์ฒด์ค‘๊ณผ ์ผ์ผ ๊ธฐ์ดˆ ๋Œ€์‚ฌ๋Ÿ‰ ๋Œ€์‹  Danger Diet๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๋‘ ๋ฒˆ์งธ ์ค„์—๋Š” ์ผ์ผ ๊ธฐ์ดˆ ๋Œ€์‚ฌ๋Ÿ‰์˜ ๋ณ€ํ™”๋ฅผ ๊ณ ๋ คํ–ˆ์„ ๋•Œ์˜ ๋‹ค์ด์–ดํŠธ ํ›„ ์˜ˆ์ƒ ์ฒด์ค‘๊ณผ ์ผ์ผ ๊ธฐ์ดˆ ๋Œ€์‚ฌ๋Ÿ‰์„ ์ถœ๋ ฅํ•˜๊ณ , ๋ณ€ํ™”ํ•œ ์ผ์ผ ๊ธฐ์ดˆ ๋Œ€์‚ฌ๋Ÿ‰์„ ๊ฐ€์ง€๊ณ  ๋‹ค์ด์–ดํŠธ ์ „ ์ผ์ผ ์—๋„ˆ์ง€ ์„ญ์ทจ๋Ÿ‰๊ณผ ๋‹ค์ด์–ดํŠธ ์ „ ์ผ์ผ ํ™œ๋™ ๋Œ€์‚ฌ๋Ÿ‰์œผ๋กœ ๋Œ์•„๊ฐ”์„ ๋•Œ ์ฒด์ค‘์ด ์ฆ๊ฐ€ํ•˜๋Š” ์š”์š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ YOYO, ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ NO๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ๋‹ค์ด์–ดํŠธ ๋„์ค‘ ๋ฐ์‹œ์˜ ์‚ฌ๋ง์ด ์˜ˆ์ƒ๋˜๋Š” ๊ฒฝ์šฐ ์ฒด์ค‘๊ณผ ์ผ์ผ ๊ธฐ์ดˆ ๋Œ€์‚ฌ๋Ÿ‰, ์š”์š” ๋ฐœ์ƒ ์—ฌ๋ถ€ ๋Œ€์‹  Danger Diet๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

ํ’€์ด

์ฃผ์–ด์ง„ ๋ณ€์ˆ˜๋“ค์ด ๋งŽ์•„์„œ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค. 

A. ๋ณ€์ˆ˜๋“ค

01. ๋‹ค์ด์–ดํŠธ ์ „

์ฒด์ค‘ : w

์ผ์ผ ์—๋„ˆ์ง€ ์„ญ์ทจ๋Ÿ‰ : I0 

๊ธฐ์ดˆ๋Œ€์‚ฌ๋Ÿ‰ : I0

์ผ์ผ ํ™œ๋™ ๋Œ€์‚ฌ๋Ÿ‰ : A0 = 0

 

02. ๋‹ค์ด์–ดํŠธ ๊ธฐ๊ฐ„ -> ์ผ์ผ ๊ธฐ์ดˆ๋Œ€์‚ฌ๋Ÿ‰์ด ์ฒด์ค‘ ๋ณ€ํ™” ๋‹ค์Œ์— ๋ณ€ํ™”ํ•œ๋‹ค

์ผ์ผ ์—๋„ˆ์ง€ ์„ญ์ทจ๋Ÿ‰ : I

๊ธฐ์ดˆ๋Œ€์‚ฌ๋Ÿ‰ : ์•„๋ž˜ ๊ณต์‹์— ๋”ฐ๋ผ ๋ณ€ํ™”ํ•จ. 

(์ผ์ผ ์—๋„ˆ์ง€ ์„ญ์ทจ๋Ÿ‰ − ์ผ์ผ ์—๋„ˆ์ง€ ์†Œ๋น„๋Ÿ‰) ์˜ ์ ˆ๋Œ“๊ฐ’์ด ๊ธฐ์ดˆ ๋Œ€์‚ฌ๋Ÿ‰ ๋ณ€ํ™” ์—ญ์น˜ T Kcal ์ดˆ๊ณผ๋ผ๋ฉด, ์ผ์ผ ๊ธฐ์ดˆ ๋Œ€์‚ฌ๋Ÿ‰์€ ⌊ (์ผ์ผ ์—๋„ˆ์ง€ ์„ญ์ทจ๋Ÿ‰ − ์ผ์ผ ์—๋„ˆ์ง€ ์†Œ๋น„๋Ÿ‰) / 2 ⌋ ๋งŒํผ ๋”ํ•ด์ง„๋‹ค. ์ผ์ผ ๊ธฐ์ดˆ ๋Œ€์‚ฌ๋Ÿ‰ ๋ณ€ํ™”๋Š” ๊ฐ™์€ ๋‚ ์˜ ์ฒด์ค‘ ๋ณ€ํ™” ๋‹ค์Œ์— ์ผ์–ด๋‚œ๋‹ค.

์ผ์ผ ํ™œ๋™ ๋Œ€์‚ฌ๋Ÿ‰ : A

 

B. ๊ณต์‹

์ผ์ผ ๊ธฐ์ดˆ๋Œ€์‚ฌ๋Ÿ‰ ๋ณ€ํ™” ๋ฐ˜์˜ X

W1 += ์ผ์ผ ์—๋„ˆ์ง€ ์„ญ์ทจ๋Ÿ‰ - (์ผ์ผ ๊ธฐ์ดˆ๋Œ€์‚ฌ๋Ÿ‰ + ํ™œ๋™ ๋Œ€์‚ฌ๋Ÿ‰)

 

์ผ์ผ ๊ธฐ์ดˆ๋Œ€์‚ฌ๋Ÿ‰ ๋ณ€ํ™” ๋ฐ˜์˜O

W2 += ์ผ์ผ ์—๋„ˆ์ง€ ์„ญ์ทจ๋Ÿ‰ - (์ผ์ผ ๊ธฐ์ดˆ๋Œ€์‚ฌ๋Ÿ‰ + ํ™œ๋™ ๋Œ€์‚ฌ๋Ÿ‰)

๋งŒ์•ฝ (์ผ์ผ ์—๋„ˆ์ง€ ์„ญ์ทจ๋Ÿ‰ − ์ผ์ผ ์—๋„ˆ์ง€ ์†Œ๋น„๋Ÿ‰) ์˜ ์ ˆ๋Œ“๊ฐ’์ด ๊ธฐ์ดˆ ๋Œ€์‚ฌ๋Ÿ‰ ๋ณ€ํ™” ์—ญ์น˜ T Kcal ์ดˆ๊ณผ๋ผ๋ฉด, ์ผ์ผ ๊ธฐ์ดˆ ๋Œ€์‚ฌ๋Ÿ‰์€ ⌊ (์ผ์ผ ์—๋„ˆ์ง€ ์„ญ์ทจ๋Ÿ‰ − ์ผ์ผ ์—๋„ˆ์ง€ ์†Œ๋น„๋Ÿ‰) / 2 ⌋ ๋งŒํผ ๋”ํ•ด์ง„๋‹ค. 

-> ์ผ์ผ ๊ธฐ์ดˆ๋Œ€์‚ฌ๋Ÿ‰ ๋ณ€ํ™”

 

#include <iostream>
#include <cmath>
using namespace std;

int main(){
    int w, basic, t, day, d_input, d_output;

    // ์ž…๋ ฅ
    cin >> w >> basic >> t;
    cin >> day >> d_input >> d_output;

    int w1 = w;
    int w2 = w;

    // ์ผ์ผ ๊ธฐ์ดˆ๋Œ€์‚ฌ๋Ÿ‰
    int basic2 = basic;

    for (int i=0; i<day; i++){
        w1 += d_input - (basic + d_output);
        w2 += d_input - (basic2 + d_output);
        // ๊ธฐ์ดˆ๋Œ€์‚ฌ๋Ÿ‰ ๋ณ€ํ™” : w2์—๋งŒ ๋ฐ˜์˜๋จ, ์ฒด์ค‘ ๋ณ€ํ™” ๋‹ค์Œ์— ๋ฐœ์ƒ
        if (abs(d_input - (basic2 + d_output)) > t)
            basic2 += floor((d_input - (basic2+d_output))/2.0);
    }

    // ์ถœ๋ ฅ 01. ์ผ์ผ ๊ธฐ์ดˆ๋Œ€์‚ฌ๋Ÿ‰์˜ ๋ณ€ํ™” ๋ฐ˜์˜ X
    if (w1 <= 0)
        cout << "Danger Diet\n";
    else
        cout << w1 << " " << basic << "\n";

    // ์ถœ๋ ฅ 02. ์ผ์ผ ๊ธฐ์ดˆ๋Œ€์‚ฌ๋Ÿ‰์˜ ๋ณ€ํ™” ๋ฐ˜์˜ O
    if (w2 <= 0 || basic2 <= 0)
        cout << "Danger Diet\n";
    else{
        cout << w2 << " " << basic2 << " ";
        if (basic - basic2 > 0) // ์ฒด์ค‘์ด ์•„๋‹ˆ๋ผ ์ผ์ผ ๊ธฐ์ดˆ๋Œ€์‚ฌ๋Ÿ‰์œผ๋กœ ๋น„๊ตํ•ด์•ผ ํ•จ
            cout << "YOYO";
        else
            cout << "NO";
    }
}

๋Œ“๊ธ€