정수 N이 주어졌을 때 작업은 숫자에 나타나는 모든 0을 '5'로 바꾸는 것입니다. 단, 앞에 '0'이 붙은 숫자는 그대로 유지되므로 '5'로 바꿀 수 없습니다. 예를 들어,
입력-1 -
N= 1007
출력 -
1557
설명 − 주어진 숫자에는 2개의 0이 있으며 '5'로 대체하면 1557로 출력됩니다.
입력-2 -
N = 00105
출력 -
155
설명 − 주어진 숫자가 선행 '0'으로 시작하므로 무시할 수 있으며 중간에 0을 '5'로 바꾼 후 출력은 155로 출력됩니다.
이 문제를 해결하기 위한 접근 방식
주어진 숫자의 모든 0을 '5'로 바꾸려면 숫자의 마지막 자릿수를 찾아 추출할 수 있습니다. 해당 숫자의 마지막 숫자가 '0'이면 값을 변경하고 '5'로 바꾸고 다른 숫자를 추출합니다. 그러나 주어진 숫자의 선행 '0'은 무시되어야 합니다.
이 문제는 먼저 마지막 숫자를 추출한 다음 해당 숫자의 다른 숫자를 추출하면서 동일한 함수를 다시 호출하는 재귀 접근 방식을 사용하여 해결할 수 있습니다.
-
숫자 N을 입력하세요.
-
정수 함수 convertToFive(int N)는 숫자를 입력으로 받고 모든 0을 '5'로 바꾸어 수정된 숫자를 반환합니다.
-
기본 경우 숫자가 '0'이면 0을 반환하고, 그렇지 않으면 해당 숫자의 마지막 숫자를 추출하여 확인합니다.
-
숫자의 마지막 숫자가 '0'이면 값을 '5'로 바꿉니다.
-
'10'을 나누고 '10'을 곱하여 숫자의 다른 자릿수를 취하는 재귀 함수를 반환합니다.
-
마지막 숫자를 추가하여 추출한 출력을 반환합니다.
예시
#include <bits/stdc++.h> using namespace std; int convertToFive(int N) { if(N==0){ return 0; } int last_digit= N%10; if(last_digit==0) last_digit=5; return convertToFive(N/10)*10 +last_digit; } int main() { int N= 14006; cout << convertToFive(N) << endl; }
출력
위의 코드를 실행하면 출력이 다음과 같이 인쇄됩니다.
14556
주어진 숫자에 0이 두 개 있기 때문에 숫자 14006을 바꾸면 14556이 됩니다.