99Club
Posts

© 2025. woongsnote All rights reserved.

Beginner
2024-04-30

반올림

정수 N이 10의 M승보다 크면, M-1 자리에서 반올림을 반복하는 함수 구현하기

#99일지#99클럽#TIL#개발자스터디#코딩테스트#항해
직접 풀러가기

문제 설명

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

제한 사항

  • 0 ≤ N ≤ 99,999,999

입출력 예시

inputoutput
1520
445500

풀이

1. 초기화

  1. 사용자가 정수 N을 입력한다.
  2. 변수 start를 10으로 초기화해서 선언 ⇒ 반올림할 현재 자릿수를 결정하는 데 사용한다.

2. 반올림

  1. N이 10보다 작다면, 반올림할 필요가 없으므로, 10이상일 때만 while문 안에서 반복한다.
  2. if N % start >= start // 2 : 현재 start 위치 앞의 N의 마지막 숫자가 start의 절반보다 크거나 같은지 확인 (ex: if start가 10인 경우 마지막 숫자가 5 이상인지 확인)
  3. 조건이 true인 경우 N은 start만큼 증가합니다. 이 단계는 현재 숫자 수준에서 숫자를 반올림한다.
  4. N -= (N % start) : N을 start로 나눌 때 나머지를 빼서 낮은 숫자 제거 ⇒ 현재 반올림 숫자 수준 아래의 숫자를 0으로 변환한다.
  5. start에 10을 곱해, 다음으로 높은 자릿수로 이동한다.

3. 종료 및 출력

  1. start가 N보다 커지면, 반복이 종료되고, 마지막으로 N 의 반올림 된 값을 출력한다.

Ex) N이 445인 경우

  1. 첫 번째 반복(start = 10): 445 % 10은 5를 제공하며 이는 >= 10 // 2(5) 만족하므로, N에 10을 더해 455가 된다. 마지막 숫자를 0으로 만들어 N은 450이 되고, start가 100이 된다.
  2. 두 번째 반복(start = 100): 450 % 100은 50을 제공하며 이는 >= 100 // 2(50)문을 만족하므로, N에 10을 더해 N은 550이 된다. 550 - (550 % 100)은 마지막 두 자리를 0으로 만들어 N은 500이 된다.
  3. 세 번째 반복(start = 1000): start가 N보다 커져서 반복이 종료되고, 이전 반복에서 반올림한 500이 출력 된다.

Python

N = int(input())

start = 10

while N >= start:
	if N % start >= start // 2:
		N += start
	N -= N % start
	start *= 10

print(N)