Programming/Java

사업자번호의 유효성 검사

d-e-v-j 2024. 9. 25. 02:00
반응형

한국에서 사업자 번호의 유효성 검사를 하는 방법을 알아보자

 

사업자 번호의 구성

사업자 등록번호는 총 10자리로 숫자로 이루어져 있다 ( 123 - 45 - 67890 )


유효성 검사 알고리즘

앞의 9자리를 사용하여 검증값을 계산한 뒤 마지막 자리와 일치하는지 확인

1. 각 자리에 가중치 부여

자리 1 2 3 4 5 6 7 8 9
가중치 1 3 7 1 3 7 1 3 5

 

2. 계산 방법

  • 사업자 번호의 각자리 수와 가중치를 곱하여 더한다.
  • 마지막 9번째 자리는 가중치를 곱한 뒤, 그 값을 10으로 나눈 나머지를 합산한다.

예시

1×1 + 2×3 + 3×7 + 4×1 + 5×3 + 6×7 + 7×1 + 8×3 + (9×5)/10의 나머지 = 총합

 

3. 총합 계산

  • 총합에서 10으로 나눈 나머지를 구하고, 이를 10에서 뺀 값을 구한다.
10 - (총합 % 10)

 

4. 검증 번호 확인

  • 이 값이 마지막 자리와 일치하면 유효한 사업자 번호이다.

알고리즘 JAVA 예시 코드

public class BusinessNumberValidator {

    public static boolean isValidBusinessNumber(String businessNumber) {
        if (businessNumber == null || businessNumber.length() != 10) {
            return false;
        }
        
        int[] weights = {1, 3, 7, 1, 3, 7, 1, 3, 5};
        int sum = 0;

        // 앞의 9자리 가중치 적용 계산
        for (int i = 0; i < 9; i++) {
            sum += Character.getNumericValue(businessNumber.charAt(i)) * weights[i];
        }

        // 9번째 자리 값의 특수 처리
        sum += (Character.getNumericValue(businessNumber.charAt(8)) * 5) / 10;

        // 마지막 검증 계산
        int checkDigit = (10 - (sum % 10)) % 10;

        // 마지막 자리와 계산된 값이 동일한지 비교
        return checkDigit == Character.getNumericValue(businessNumber.charAt(9));
    }

    public static void main(String[] args) {
        String businessNumber = "1234567890";
        if (isValidBusinessNumber(businessNumber)) {
            System.out.println("유효한 사업자 번호입니다.");
        } else {
            System.out.println("유효하지 않은 사업자 번호입니다.");
        }
    }
}

이 방법은 단순한 유효성 검사로, 실제 사업자 번호의 등록 여부는 국세청 등을 통해 확인해야 한다.

 

728x90
반응형
LIST