Algorithm/BOJ(Baekjoon Online Judge)

[백준 - 2033번] 반올림 - Java //Wello Horld//

koucop 2020. 1. 3. 14:49

이번에는 BOJ의 2033번 문제 "반올림" 을 풀어보도록 하자

 

입력으로 첫째 줄에 정수 N이 주어지고,

출력으로 첫째 줄에 N의 자릿수에 따라서 10보다 크면 일의 자리에서 반올림을, 100보다 크면 십의 자리에서 반올림을 한 결과를 구하면 되는 문제이다.

성공한 코드는 아래와 같다.

import java.io.*;
import java.util.*;

public class sample {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        long N = Long.parseLong(br.readLine());
        long zari = 10;
        while (N > zari) {
            if (N % zari < zari / 2)
                N -= N % zari;
            else {
                N -= N % zari;
                N += zari;
            }
            zari *= 10;
        }
        bw.write(N + "\n");

        bw.flush();
        br.close();
        bw.close();
    }
}

 

문제 : https://www.acmicpc.net/problem/2033

 

2033번: 반올림

정수 N이 주어져 있을 때 이 수가 10보다 크면 일의 자리에서 반올림을 하고, 이 결과가 100보다 크면 다시 10의 자리에서 반올림을 하고, 또 이 수가 1000보다 크면 100의 자리에서 반올림을 하고.. (이하 생략) 이러한 연산을 한 결과를 출력하시오.

www.acmicpc.net

 

혹시 코드에 이상한 부분이나 틀린 부분이 있던지, 이해가 안가는 부분이 있다면 댓글로 알려주세요.