정수 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)