이 글에서는 주어진 숫자 N의 앞 X자리와 뒤 X자리 사이의 절대 차이를 구하는 방법을 알아보겠습니다. 숫자와 X 값이 주어졌을 때, 이 문제는 다음 단계로 해결할 수 있습니다.
먼저 숫자의 전체 자릿수를 구하고, 모듈로 연산자(%)를 사용해 마지막 X자리를 추출합니다. 그다음 숫자를 반복적으로 10으로 나누어 앞 X자리만 남기고 나머지 자릿수를 제거합니다. 마지막으로 두 값의 차이를 계산하여 절댓값 형태로 반환하면 됩니다.
예를 들어 숫자가 N = 568424이고 X = 2라고 가정해 보겠습니다. 이 경우 앞 두 자리는 56, 뒤 두 자리는 24이므로, 차이는 (56 − 24) = 32가 됩니다.
알고리즘
diffFirstLastDigits(N, X)
begin
p := 10^X
last := N mod p // 뒤 X자리 추출
len := 숫자 N의 자릿수
while len ≠ X, do
N := N / 10 // 뒤에서 한 자리씩 제거
len := len - 1
done
first := N // 앞 X자리 추출
return |first - last|
end
C++ 구현 예제
아래는 위 알고리즘을 C++로 구현한 코드입니다. 자릿수는 log10 함수를 활용해 손쉽게 계산할 수 있습니다.
#include <iostream>
#include <cmath>
using namespace std;
// 숫자의 자릿수를 구하는 함수
int lengthCount(int n){
return floor(log10(n) + 1);
}
// 앞 X자리와 뒤 X자리의 절대 차이를 구하는 함수
int diffFirstLastDigits(int n, int x) {
int first, last, p, len;
p = pow(10, x);
last = n % p; // 뒤 X자리
len = lengthCount(n);
while(len != x){
n /= 10;
len--;
}
first = n; // 앞 X자리
return abs(first - last);
}
main() {
int n, x;
cout << "Enter number and number of digits from first and last: ";
cin >> n >> x;
cout << "Difference: " << diffFirstLastDigits(n,x);
}
실행 결과
Enter number and number of digits from first and last: 568424 2
Difference: 32
입력값 568424와 2에 대해 프로그램은 앞 두 자리(56)와 뒤 두 자리(24)의 차이인 32를 정상적으로 출력하는 것을 확인할 수 있습니다.