룬 알고리즘(Luhn Algorithm)은 신용카드 번호가 유효한지 확인하는 간단한 수학 알고리즘이에요.

비전공자도 이해할 수 있도록 쉬운 예제와 함께 설명할게요.


✅ 룬 알고리즘 쉽게 설명하기

예를 들어, 다음과 같은 16자리 카드번호가 있다고 가정해볼게요:

카드번호: 4539 1488 0343 6467

이 숫자가 진짜 카드번호인지는 다음 단계로 확인해요.


🧮 룬 알고리즘 작동 방식

  1. 오른쪽 끝에서부터 시작해서 한 자리씩 왼쪽으로 이동해요.
  2. 짝수번째 자리는 그대로 두고, 홀수번째 자리는 2를 곱해요.
  3. 2를 곱한 값이 10 이상이면, 그 자릿수 숫자를 더해요. (예: 12 → 1 + 2 = 3)
  4. 마지막에 모든 숫자를 다 더해요.
  5. 합이 10으로 나누어떨어지면 유효한 카드번호예요!
public class LuhnCheck {

    public static boolean isValidCardNumber(String cardNumber) {
        int total = 0;
        boolean shouldDouble = false;

        // 오른쪽부터 왼쪽으로 하나씩 숫자 확인
        for (int i = cardNumber.length() - 1; i >= 0; i--) {
            int digit = Character.getNumericValue(cardNumber.charAt(i));

            if (shouldDouble) {
                digit *= 2;
                if (digit > 9) {
                    digit -= 9;
                }
            }

            total += digit;
            shouldDouble = !shouldDouble; // 번갈아가면서 true/false 전환
        }

        return total % 10 == 0;
    }

    public static void main(String[] args) {
        String cardNumber = "4539148803436467";

        if (isValidCardNumber(cardNumber)) {
            System.out.println("유효한 카드번호입니다.");
        } else {
            System.out.println("유효하지 않은 카드번호입니다.");
        }
    }
}

✅ 실행 결과

입력된 카드번호 4539148803436467는 실제로 룬 알고리즘을 통과하는 유효한 카드번호이므로, 실행 시 다음과 같은 출력이 나올 거예요:

 

> 유효한 카드번호입니다.

+ Recent posts