룬 알고리즘(Luhn Algorithm)은 신용카드 번호가 유효한지 확인하는 간단한 수학 알고리즘이에요.
비전공자도 이해할 수 있도록 쉬운 예제와 함께 설명할게요.
✅ 룬 알고리즘 쉽게 설명하기
예를 들어, 다음과 같은 16자리 카드번호가 있다고 가정해볼게요:
카드번호: 4539 1488 0343 6467
이 숫자가 진짜 카드번호인지는 다음 단계로 확인해요.
🧮 룬 알고리즘 작동 방식
- 오른쪽 끝에서부터 시작해서 한 자리씩 왼쪽으로 이동해요.
- 짝수번째 자리는 그대로 두고, 홀수번째 자리는 2를 곱해요.
- 2를 곱한 값이 10 이상이면, 그 자릿수 숫자를 더해요. (예: 12 → 1 + 2 = 3)
- 마지막에 모든 숫자를 다 더해요.
- 합이 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는 실제로 룬 알고리즘을 통과하는 유효한 카드번호이므로, 실행 시 다음과 같은 출력이 나올 거예요:
> 유효한 카드번호입니다.
'정보' 카테고리의 다른 글
SKT 유심 해킹 피해자 집단소송 신청 방법 안내 (2) | 2025.05.06 |
---|---|
ipTIME 공유기 모델명으로 성능 구별하는 법! (1) | 2025.05.06 |
스프링 프레임워크 버전별 JDK 지원 정리 (1) | 2025.04.27 |
node, npm, yarn의 관계 (1) | 2025.04.20 |
ISO 4217 통화코드 (0) | 2025.04.01 |