반올림
문제
정수 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) # 최종적으로 반올림된 결과를 출력합니다.
'백준' 카테고리의 다른 글
2024.7.8 백준(Python) 1874 스택 수열 (0) | 2024.07.07 |
---|---|
2024.7.7 백준(Python) 9933 민균이의 비밀번호 (0) | 2024.07.07 |
2024.7.4 백준(Python) 1145 적어도 대부분의 배수 (0) | 2024.07.04 |
2024.7.4 백준(Python) 1373 2진수 8진수 (0) | 2024.07.04 |
2024.6.27 백준(Python) 4344 평균은 넘겠지 (0) | 2024.06.27 |