백준 BaekJoon 2033번: 반올림 [Java] 자바

2020-11-08


문제

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

입력

첫째 줄에 정수 N이 주어진다. (0 ≤ N ≤ 99,999,999)

출력

첫째 줄에 위와 같은 연산을 한 결과를 출력하시오.


import java.util.Scanner;

public class TemplateA {
		public static void main(String[] args)  {
			
			Scanner scan = new Scanner(System.in);
			String n = scan.next();
			
			int [] arr = new int [n.length() + 2];
	
			
			int temp = 0;
			//n의 초기 문자위치 지정할 변수
			for(int i = 2; i < arr.length; i++) {
				arr[i] = n.charAt(temp) - '0';
				temp++;
			}
			//초기배열 {0,0,1,5}
			//올림을 생각해 앞에 자리 여유를 줌
			
			for(int i = arr.length - 1; i > 2; i--) {
				if(arr[i] >= 5) {
					arr[i] = 0;
					arr[i -1] += 1;
				}else {
					arr[i] = 0;
				}
			}
			//맨끝자리부터 앞에 한자리를 제외한 숫자 까지 반올림
			
			
			if(arr[2] > 9) {
			int mok = arr[2] / 10;
			int nmg = arr[2] % 10;
			arr[1] += mok;
			
			if(nmg >= 5) {
				arr[1] += 1;
			}else {
				arr[2] = 0;
			}
			}
			//첫자리 올림이 있엇나 비교함
			//올림이 있으면 목만큼 올려주고
			//나머지가 5가 아닐 경우 0을 대입함
			
			
			if(arr[1] == 0) {
				for(int i = 2; i <arr.length; i++) {
					System.out.print(arr[i]);
				}
			}else {
					for(int i = 1; i <arr.length; i++) {
						System.out.print(arr[i]);
					}
				}
		}
    }

 

출처링크: www.acmicpc.net/problem/2033

 

2033번: 반올림

정수 N이 주어져 있을 때 이 수가 10보다 크면 일의 자리에서 반올림을 하고, 이 결과가 100보다 크면 다시 10의 자리에서 반올림을 하고, 또 이 수가 1000보다 크면 100의 자리에서 반올림을 하고.. (

www.acmicpc.net