Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 숫자 속 모든 0을 5로 바꾸는 프로그램 작성하기

정수 N이 주어졌을 때, 숫자 안에 포함된 모든 0을 '5'로 바꾸는 것이 목표입니다. 단, 맨 앞에 붙은 선행 0은 유효한 자릿수가 아니므로 변경 대상에서 제외하고 그대로 무시합니다.

문제 예시

입력 예제 1

N = 1007

출력:

1557

설명: 주어진 숫자에는 0이 두 개 있으며, 이를 모두 '5'로 바꾸면 결과는 1557이 됩니다.

입력 예제 2

N = 00105

출력:

155

설명: 맨 앞의 선행 0은 무시되고, 중간에 있는 0만 '5'로 바뀌어 최종 결과는 155가 됩니다.

문제 해결 접근 방법

숫자의 모든 0을 5로 바꾸려면 각 자릿수를 하나씩 확인하면서 0인 자리를 찾아내면 됩니다. 구체적인 절차는 다음과 같습니다.

  • 숫자 N을 입력받습니다.
  • convertToFive 함수는 숫자를 입력받아 모든 0을 5로 바꾼 뒤 수정된 숫자를 반환합니다.
  • 숫자를 10으로 나눈 나머지를 이용해 일의 자리부터 한 자리씩 확인하며, 해당 자릿수가 0이면 자리 가중치(place value)에 5를 곱한 값을 결과에 더합니다.
  • 숫자를 10으로 나누어 다음 자릿수로 이동하고, 자리 가중치는 10씩 곱해 늘립니다.
  • 모든 자릿수를 확인한 후 계산된 추가 값을 원래 숫자에 더해 최종 결과를 반환합니다.

구현 예제

def convert_to_five(number):
    return number + calculate_added_value(number)

def calculate_added_value(number):
    result = 0
    place_value = 1
    # 입력값이 0인 경우 처리
    if number == 0:
        result += 5 * place_value
    while number > 0:
        # 일의 자리부터 확인하며 0이면 해당 자리에 5 더하기
        if number % 10 == 0:
            result += 5 * place_value
        number //= 10
        place_value *= 10
    return result

print(convert_to_five(14006))

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

14556

주어진 숫자 14006에는 0이 두 개 있으므로, 이를 모두 5로 바꾸면 14556이 됩니다.

대안: 문자열 치환 활용하기

파이썬에서는 문자열의 replace 메서드를 활용하면 훨씬 간결하게 같은 결과를 얻을 수 있습니다.

def convert_to_five(number):
    return int(str(number).replace('0', '5'))

print(convert_to_five(14006))  # 14556

숫자를 문자열로 변환한 뒤 '0'을 '5'로 치환하고 다시 정수형으로 변환하는 방식입니다. 값이 정수로 처리되는 경우 선행 0은 애초에 존재하지 않으므로, 문제의 조건도 자연스럽게 만족합니다.