ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [BOJ 4749] Take Your Vitamins
    문제 풀이/Baekjoon Online Judge 2023. 2. 9. 16:39

    난이도: Bronze I

     

    태그

    더보기
    • Mathematics
    • String → Parsing

     

    풀이

    1. 출력되는 \( P \)는 어떻게 계산할까?

    더보기

    \( P \)를 빼고는 입력에서 주어진 정보와 동일하니, 바로 출력해주면 됩니다.

    그럼 \( P \)는 어떻게 계산할까요?

     

    \( P = \frac{A}{R} \times 100 \)입니다. 다르게 말하자면 (함유량) ÷ (권장량)을 백분율로 나타낸 거죠.

     

    물론, 이 \( P \)가 \( 1 \)보다 작으면 조건문으로 빼주고, 나중에 Provides no significant amount of: 뒤에 출력해줘야 하겠죠.

     

    2. 구현 디테일

    더보기

    \( V \)에는 공백이 들어올 수도 있기 때문에, 공백까지 같이 입력받아줘야 합니다.

    하지만 공백을 기준으로 한 줄을 통째로 입력받는 건 앞에 있는 \( A, U, R \) 역시 분리해줘야 한다는 의미죠.

     

    대신에, \( V \)가 맨 마지막에 온다는 점을 이용해서

    \( A, U, R \)만 평상시대로 입력받고, \( V \)만 getline으로 입력받는 걸 생각해볼 수 있습니다.

     

    물론 \( R \) 뒤에 나오는 공백은 잘 무시해줘야겠죠.

     

    3. 코드

    더보기
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    void Main(){
        vector<string> s;
        while (1){
            ld a, r; string u, v; cin >> a >> u >> r;
            cin.ignore(); getline(cin, v);
            if (a < 0){ break; }
            ld p = a*100/r; if (p < 1){ s.push_back(v); }
            else{
                cout.precision(1); cout << v << ' ' << a << ' ' << u << ' ';
                cout.precision(0); cout << p << '%' << endl;
            }
        }
        cout << "Provides no significant amount of:" << endl;
        for (string x : s){ cout << x << endl; }
    }
    cs

    '문제 풀이 > Baekjoon Online Judge' 카테고리의 다른 글

    [Baekjoon - 27324] ゾロ目 (Same Numbers)  (0) 2023.02.13
    [Baekjoon - 22352] 항체 인식  (0) 2023.02.10
    [27331] 2 桁の整数 (Two-digit Integer)  (0) 2023.02.08
    [26082] WARBOY  (0) 2023.02.08
    [25439] 죄수들의 도전  (0) 2023.02.08
Designed by Tistory.