💻 Algorithm/Baekjoon

[JAVA] 백준 4539 - 반올림

dlalwl_jpg 2022. 8. 14. 21:25

실버V

https://www.acmicpc.net/problem/4539

 

4539번: 반올림

정수 x가 주어졌을 때, 10보다 크다면, 1의 자리에서 반올림하고, 결과가 100보다 크면, 10의 자리에서 반올림하고, 1000보다 크면, 100의 자리에서 반올림하고... 이와 같이 계속 반올림하는 프로그램

www.acmicpc.net

문제

정수 x가 주어졌을 때, 10보다 크다면, 1의 자리에서 반올림하고, 결과가 100보다 크면, 10의 자리에서 반올림하고, 1000보다 크면, 100의 자리에서 반올림하고... 이와 같이 계속 반올림하는 프로그램을 작성하시오.


입력

첫째 줄에 테스트 케이스의 개수 n이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 정수 x가 주어진다. (0 ≤ x ≤ 99999999)


출력

각 테스트 케이스마다 입력으로 주어지는 정수를 문제 설명에 나온 것처럼 반올림한 결과를 출력한다.


접근 방법

숫자말고 문자열로 입력받아 맨 끝자리부터 5이상이면 앞자리수에 1을 증가시키고, 0으로 바꾸는 방법으로 접근하였다.


코드

package bj4539;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class bj4539 {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		//입력할 숫자 개수 입력
		int n = Integer.parseInt(br.readLine());
		String x;
	
		for(int i = 0; i < n; i++) {
			
			x = br.readLine(); //숫자 입력
			int[] arr = new int[x.length()]; 

			for(int j = 0; j < x.length(); j++) {
				
				arr[j] = 0; //초기화
				arr[j] = x.charAt(j) - 48; //각 자리수로 나눠 저장하기
			}
		
			//마지막 자리부터 시작하여
			for(int k = x.length() - 1; k >= 1; k--) {		
				
				if(arr[k] > 4) //현재 자리수가 4보다 크면
					arr[k - 1] += 1; //앞 자리수에 1증가
				
				arr[k] = 0; //현재 자리수는 0으로 바꾸기
			}
			
			//결과출력
			for(int p = 0; p < x.length(); p++)
				System.out.print(arr[p]);
			
			System.out.println();
		}
	}

}

'💻 Algorithm > Baekjoon' 카테고리의 다른 글

[JAVA] 백준 5635 - 생일  (0) 2022.08.15
[JAVA] 백준 4383 - 점프는 즐거워  (0) 2022.08.12
[JAVA] 백준 15829 - Hashing  (0) 2022.08.05
[JAVA] 백준 9012 - 괄호  (0) 2022.08.02
[JAVA] 백준 10866 - 덱  (0) 2022.08.02