정수 N이 10의 M승보다 크면, M-1 자리에서 반올림을 반복하는 함수 구현하기
정수 N이 주어져 있을 때 이 수가 10보다 크면 일의 자리에서 반올림을 하고, 이 결과가 100보다 크면 다시 10의 자리에서 반올림을 하고, 또 이 수가 1000보다 크면 100의 자리에서 반올림을 하고.. (이하 생략) 이러한 연산을 한 결과를 출력하시오.
| input | output |
| 15 | 20 |
| 445 | 500 |
N이 10보다 작다면, 반올림할 필요가 없으므로, 10이상일 때만 while문 안에서 반복한다.
if N % start >= start // 2 : 현재 start 위치 앞의 N의 마지막 숫자가 start의 절반보다 크거나 같은지 확인 (ex: if start가 10인 경우 마지막 숫자가 5 이상인지 확인)
N은 start만큼 증가합니다. 이 단계는 현재 숫자 수준에서 숫자를 반올림한다.
N -= (N % start) : N을 start로 나눌 때 나머지를 빼서 낮은 숫자 제거 ⇒ 현재 반올림 숫자 수준 아래의 숫자를 0으로 변환한다.
start에 10을 곱해, 다음으로 높은 자릿수로 이동한다.
N 의 반올림 된 값을 출력한다.
445 % 10은 5를 제공하며 이는 >= 10 // 2(5) 만족하므로, N에 10을 더해 455가 된다. 마지막 숫자를 0으로 만들어 N은 450이 되고, start가 100이 된다.
450 % 100은 50을 제공하며 이는 >= 100 // 2(50)문을 만족하므로, N에 10을 더해 N은 550이 된다. 550 - (550 % 100)은 마지막 두 자리를 0으로 만들어 N은 500이 된다.
500이 출력 된다.
N = int(input())
start = 10
while N >= start:
if N % start >= start // 2:
N += start
N -= N % start
start *= 10
print(N)