본문 바로가기

백준

2024.7.5 백준(Python) 2033 반올림

반올림 

문제

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

입력

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

출력

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

예제 입력 1 

15

예제 출력 1 

20

예제 입력 2 

446

예제 출력 2 

500

 

정답 코드

num = input()  # 사용자로부터 숫자를 입력받습니다.
len_index = len(num) - 1  # 입력된 숫자의 자릿수를 계산합니다.

count = 1  # 반올림을 할 자릿수를 나타내는 변수입니다. 초기값은 1로 설정합니다.

# 입력된 숫자의 각 자릿수에 대해 오른쪽에서 왼쪽으로 반복합니다.
for i in range(len_index, 0, -1):
    if int(num[i]) >= 5 and int(num) > 10 ** count:
        # 현재 자릿수의 숫자가 5 이상이고, 이전 자릿수까지의 숫자가 count 자릿수보다 큰 경우 반올림을 수행합니다.
        num = list(num)  # 문자열을 리스트로 변환하여 요소를 수정할 준비를 합니다.
        num[i] = '0'  # 현재 자릿수를 0으로 변경하여 반올림 처리합니다.
        num = "".join(num)  # 리스트를 다시 문자열로 변환합니다.
        a = int(num) + 10 ** count  # 반올림 후 다음 자릿수에 1을 더합니다.
        num = str(a)  # 결과를 문자열로 변환하여 다시 num에 할당합니다.
        count += 1  # 다음 자릿수로 넘어갑니다.
    elif int(num[i]) <= 4 and int(num) > 10 ** count:
        # 현재 자릿수의 숫자가 4 이하이고, 이전 자릿수까지의 숫자가 count 자릿수보다 큰 경우 반올림을 수행합니다.
        num = list(num)  # 문자열을 리스트로 변환하여 요소를 수정할 준비를 합니다.
        num[i] = '0'  # 현재 자릿수를 0으로 변경하여 반올림 처리합니다.
        num = "".join(num)  # 리스트를 다시 문자열로 변환합니다.
        count += 1  # 다음 자릿수로 넘어갑니다.

print(num)  # 최종적으로 반올림된 결과를 출력합니다.