반응형
ABCDEF - GHIJKLM
주민등록번호는 위와 같이 13자리로 구성되어 있다. 각 구성을 알아보자.
ABCDEF
: 생년월일
G: 성별을 나타낸다.생년월일의 년도가 2자리만 표기가 되기때문에 A에서 자세히 구분할수 있다.
- 1: 1900년대에 출생한 남자
- 2: 1900년대에 출생한 여자
- 3: 2000년대에 출생한 남자
- 4: 2000년대에 출생한 여자
- 5: 1900년대에 출생한 외국인 남자
- 6: 1900년대에 출생한 외국인 여자
- 7: 2000년대에 출생한 외국인 남자
- 8: 2000년대에 출생한 외국인 여자
- 9: 1800년대에 출생한 남자
- 0: 1800년대에 출생한 여자
HIJK: 출생신고를 한 지역 코드이며 아래와 같은 형식을 가지고 있다.
- H: 지역
- I: 시.군.구
- J: 동.읍.면
- K: 통.반.리
HI는 출생등록지에 해당하는 지방자치단체의 고유번호이다.
JK는 출생등록을 한 읍.면.동주민센터 고유 번호로, 주민센터마다 고유한 번호가 행정자치부에 의해 부여되어 있다.
L: 해당지역에서 출생신고를 한 당일의 접수 순번을 나타낸다.
(이 숫자는 1부터 시작되며, 통계상 보통 5를 넘지 않는다고 한다.)
M: 검증번호로 앞의 12자리를 가지고 특정한 공식으로 산출한 숫자를 적는다.
공식: M = (11 - ((2×A + 3×B + 4×C + 5×D + 6×E + 7×F + 8×G + 9×H + 2×I + 3×J + 4×K + 5×L) % 11)) % 10
소괄호 안에 잇는것을 계산한 값을 11로 나누어 나온 나머지를 11에서 뺀 값이다. 단, 10은 0, 11은 1로 표기한다.
function ssnCheck(_ssn1, _ssn2)
{
var ssn1 = _ssn1,
ssn2 = _ssn2,
ssn = ssn1+''+ssn2,
arr_ssn = [],
compare = [2,3,4,5,6,7,8,9,2,3,4,5],
sum = 0;
// 입력여부 체크
if (ssn1 == '')
{
alert('주민등록번호를 기입해주세요.');
return false;
}
if (ssn2 == '')
{
alert('주민등록번호를 기입해주세요.');
return false;
}
// 입력값 체크
if (ssn1.match('[^0-9]'))
{
alert("주민등록번호는 숫자만 입력하셔야 합니다.");
return false;
}
if (ssn2.match('[^0-9]'))
{
alert("주민등록번호는 숫자만 입력하셔야 합니다.");
return false;
}
// 자리수 체크
if (ssn.length != 13)
{
alert("올바른 주민등록 번호를 입력하여 주세요.");return false;
}
// 공식: M = (11 - ((2×A + 3×B + 4×C + 5×D + 6×E + 7×F + 8×G + 9×H + 2×I + 3×J + 4×K + 5×L) % 11)) % 10
for (var i = 0; i<13; i++)
{
arr_ssn[i] = ssn.substring(i,i+1);
}
for (var i = 0; i<12; i++)
{
sum = sum + (arr_ssn[i] * compare[i]);
}
sum = (11 - (sum % 11)) % 10;
if (sum != arr_ssn[12])
{
alert("올바른 주민등록 번호를 입력하여 주세요.");
return false;
}
return true;
}
ssnCheck('830422', '1185600');
반응형
'Algorithm' 카테고리의 다른 글
jvascript array 경우의 수 구하기 (permute) (0) | 2022.02.15 |
---|---|
LRU Cache (Least Recently Used) / 프로그래머스 캐시 (0) | 2022.01.19 |
콜라츠 추측 (0) | 2021.08.27 |
하샤드의 수 (Harshad Number) (0) | 2021.08.25 |
덧셈 뺄셈 동적 계산 (dynamic plus minus, Dynamic addition and subtraction) (0) | 2019.07.19 |
퀵 정렬(Quick Sort) (javascript) (0) | 2016.05.31 |
재귀 함수를 이용한 거듭제곱 (a의 n승) (javascript) (0) | 2016.05.18 |
에라토스테네스의 체를 이용한 소수 찾기 (0) | 2016.05.17 |