๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ/goorm

[๊ตฌ๋ฆ„LEVEL] ํ†ต์‹ ๋น„ ๊ณ„์‚ฐํ•˜๊ธฐ

by dar0m! 2020. 3. 12.
๋‚œ์ด๋„ ์ •๋‹ต๋ฅ 
โ˜…โ˜… 31.7%
 

๊ตฌ๋ฆ„LEVEL

๋‚œ์ด๋„๋ณ„ ๋‹ค์–‘ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•จ์œผ๋กœ์จ SW ์—ญ๋Ÿ‰์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

level.goorm.io

 

๋ฌธ์ œ

ํ†ต์‹ ์‚ฌ ์š”๊ธˆํ‘œ

ํ†ต์‹ ์‚ฌ ์š”๊ธˆํ‘œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด์ง€ ์•Š๊ณ  ์š”๊ธˆ์„ ์ค„์—ฌ์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • ๊ธฐ๋ณธ ์ œ๊ณต ๋ฐ์ดํ„ฐ๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ๋Š” 20์›/1MB ์˜ ๊ณผ๊ธˆ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • 69900์› ์ด์ƒ ์š”๊ธˆ์ œ๋Š” ๋ฐ์ดํ„ฐ ์ดˆ๊ณผ๊ธˆ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ดˆ๊ณผ๊ธˆ ์ƒํ•œ์€ ์ดˆ๊ณผํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ 5GB๋ฏธ๋งŒ์ผ์‹œ 25.000์›์ด ์ ์šฉ ๋˜๋ฉฐ, ์ดˆ๊ณผํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ 5GB ์ด์ƒ์ด๋ฉด ์ƒ๊ธฐ ๊ณผ๊ธˆ์œจ์— ๋‹ค๋ผ ์ถ”๊ฐ€ ์š”๊ธˆ์ด ์žฌ์ฑ…์ •๋˜๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ์•„๋ฌด๋ฆฌ ๋งŽ์ด ์‚ฌ์šฉํ•ด๋„ 180.000์› ์ด์ƒ์˜ ์ถ”๊ฐ€ ์š”๊ธˆ์€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • 1000MB = 1GB ๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ

key point, ๋ฐ์ดํ„ฐ ์ดˆ๊ณผ๊ธˆ ์ƒํ•œ์„ ์ž˜ ์ง€์ผœ์„œ ๊ณ„์‚ฐํ•œ๋‹ค.
  1. ํ†ต์‹ ์‚ฌ ์š”๊ธˆํ‘œ๋ฅผ ๋ฐฐ์—ด์— ์ €์žฅํ•œ๋‹ค. → plan[][2]
  2. ํ†ต์‹ ์‚ฌ ์š”๊ธˆํ‘œ ํ–‰๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ•ด๋‹น i๋ฒˆ์งธ ์š”๊ธˆ์ œ์ผ ๋•Œ ์š”๊ธˆ์„ ๊ณ„์‚ฐํ•œ๋‹ค.
  3. i๋ฒˆ์งธ ์š”๊ธˆ์ œ ์‚ฌ์šฉ์‹œ ์›” ์š”๊ธˆ์ด ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ๊ฐ๊ฐ ์ถ”์ฒœ ์š”๊ธˆ์ œ, ์ถ”์ฒœ์š”๊ธˆ์ œ ์‚ฌ์šฉ์‹œ ์›” ์š”๊ธˆ๋ณ€์ˆ˜์— ์ €์žฅํ•œ๋‹ค. → recommend_plan, recommend_charge
  4. ์ถœ๋ ฅ๊ธฐ์ค€์— ๋งž์ถฐ ์ถ”์ฒœ์š”๊ธˆ์ œ, ํ˜„์žฌ ์š”๊ธˆ์ œ๋กœ ์‚ฌ์šฉ์‹œ ์›” ์š”๊ธˆ, ์ถ”์ฒœ์š”๊ธˆ์ œ ์‚ฌ์šฉ์‹œ ์›” ์š”๊ธˆ์„ ์ •ํ™•ํžˆ ์ถœ๋ ฅํ•œ๋‹ค.

์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <algorithm>
using namespace std;
int pre_plan, use, pre_charge, recommend_plan,  recommend_charge = 200000;
int plan[][2= { {29900300},{349001000},{399002000},{499006000},{5990011000},{69900-1} };
int main() {
    scanf("%d %d"&pre_plan, &use);
 
    int charge = 0, tmp = 0;
    for (int i = 0; i < 6; i++) {
        if (i == 5) tmp = 0;
        else {
            if (use > plan[i][1]) {
                tmp = use - plan[i][1];
            }
            else {
                tmp = 0;
            }
 
            if (tmp * 20 > 25000 && tmp < 5000) {
                tmp = 25000;
            }
            else if (tmp * 20 > 180000) {
                tmp = 180000;
            }
            else tmp *= 20;
        }
        if (plan[i][0== pre_plan) {    
            pre_charge = plan[i][0+ tmp;
            continue;
        }
        charge = plan[i][0+ tmp;
        if (charge < recommend_charge) {
            recommend_charge = charge;
            recommend_plan = plan[i][0];
        }
    }
 
    printf("%d %d %d", recommend_plan, pre_charge, recommend_charge);
 
    return 0;
}
cs

๋Œ“๊ธ€