[ 백준 ] 4539 / 반올림

5091 단어 psbojboj

# Appreciation

/*
 * Problem :: 4539 / 반올림
 * 
 * Kind :: Simulation
 *
 * Insight
 * - 10보다 크다면 1의 자리에서 반올림
 *   100보다 크다면 10의 자리에서 반올림
 *   ...
 *   + for 문의 초기화식과 증감식을 이용하여
 *     int 자료형 변수 i 가 10, 100, 1000, ... 이 되게끔 하고
 *     1의 자리, 10의 자리의 값은 X % i / (i/10) 으로 구해주자
 *     # 해당 자리의 값이 5 이상이면
 *       X = (X/i + 1) * i 이며
 *       그렇지 않으면
 *       X = X/i * i 가 된다
 */

# Code

//
//  BOJ
//  ver.C++
//
//  Created by GGlifer
//
//  Open Source

#include <iostream>

using namespace std;

#define endl '\n'

// Set up : Global Variables
/* None */

// Set up : Functions Declaration
/* None */


int main()
{
    // Set up : I/O
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    // Set up : Input
    int N; cin >> N;

    while (N--) {
        int X; cin >> X;

        // Process
        for (int i=10; i<X; i*=10) {
            /* i 보다 크다면 (i/10)의 자리에서 반올림하고 ... */
            if (X % i / (i/10) >= 5) {
                X = (X/i + 1) * i;
            } else {
                X = X/i * i;
            }
        }

        // Control : Output
        cout << X << endl;
    }
}

// Helper Functions
/* None */

좋은 웹페이지 즐겨찾기