주민등록번호 유효성 검사 프로그램을 만들어보자
- 각 자리에 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5를 곱하고 더함(마지막 주민등록번호 숫자는 제외)
0+0+4+0+6+7+24+0+12+24+20+5 = 102
- 11로 나눈 나머지 값을 구함
102 % 11 = 3
- 11에서 위 값을 뺌
11 - 3 = 8
- 위 결과가 2자리인 경우 10으로 나눈 나머지 값을 구함
- 결과값이 마지막 주민등록번호와 일치하면 유효한 주민번호
단, 클래스로 설계하고 객체를 이용하여 프로그램을 동작
class Jumin:
def __init__(self, jumin):
self.jumin = jumin # 입력된 주민등록번호를 객체의 속성으로 설정
def validate(self):
majimak = int(self.jumin[-1]) # 입력된 주민등록번호의 마지막 숫자를 추출하여 변수에 저장
gob = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5] # 주민등록번호의 각 자릿수에 곱해질 가중치를 리스트로 정의
total = 0 # 주민등록번호의 유효성 검사를 위한 총 합 변수 초기화
# 각 자릿수에 해당하는 가중치를 곱하여 총 합을 계산
for i in range(12):
sum = int(self.jumin[i]) * gob[i] # 각 자릿수에 해당하는 값과 가중치를 곱한 결과를 변수에 저장
total += sum # 계산된 결과를 총 합에 더함
nameoji = total % 11 # 총 합을 11로 나눈 나머지를 구함
if nameoji >= 10: # 나머지가 10 이상인 경우
nameoji %= 10 # 10으로 나눈 나머지를 다시 구함
# 주민등록번호의 유효성 검사
if (11 - nameoji) % 10 == majimak: # 계산된 결과와 주민등록번호의 마지막 숫자가 일치하는지 확인
return True # 유효한 주민등록번호인 경우 True 반환
else:
return False # 유효하지 않은 주민등록번호인 경우 False 반환
# 주민등록번호 입력 받기
jumin = input("주민등록번호를 입력하세요, (-)는 빼고: ")
# Jumin 클래스의 인스턴스 생성
validator = Jumin(jumin)
# 주민등록번호의 유효성 검사 및 결과 출력
if validator.validate(): # 주민등록번호가 유효한 경우
print("유효한 주민등록번호입니다.") # 메시지 출력
else: # 주민등록번호가 유효하지 않은 경우
print("유효하지 않은 주민등록번호입니다.") # 메시지 출력