728x90
문제
정수 N이 주어져 있을 때 이 수가 10보다 크면 일의 자리에서 반올림을 하고, 이 결과가 100보다 크면 다시 10의 자리에서 반올림을 하고, 또 이 수가 1000보다 크면 100의 자리에서 반올림을 하고.. (이하 생략) 이러한 연산을 한 결과를 출력하시오.
https://www.acmicpc.net/problem/2033
입력
첫째 줄에 정수 N이 주어진다. (0 ≤ N ≤ 99,999,999)
출력
첫째 줄에 위와 같은 연산을 한 결과를 출력하시오.
예제
# input
15
# output
20
# input
446
# output
500
문제 풀이
N = list(map(int, list(input())))
# 리스트를 뒤집어 작은 자릿수부터 처리
N = N[::-1]
# 리스트의 각 요소를 순회 (마지막 요소는 제외)
for i in range(len(N) - 1):
# 현재 숫자가 5 이상이면 다음 숫자에 1을 더함
if N[i] >= 5:
N[i + 1] += 1
# 현재 숫자는 0으로 설정 (반올림 효과를 위해)
N[i] = 0
# 리스트를 다시 원래 순서로 뒤집고, 각 요소를 문자열로 변환하여 출력
print(''.join(map(str, N[::-1])))
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90