본문 바로가기
Study Note/Java

JAVA_ Test101_ 주민번호 유효성 검사 공식

by 시뮝 2018. 5. 30.
728x90


Test101  주민번호 유효성 검사 공식

 ※ 공식

     123456-1234567 (주민번호)

    --------  --------

     234567 892345 (각 자리에 곱해질 수 『234567 892345』, 마지막수는 곱하지 않는다.)

     규칙에 맞게 곱셈 연산을 수행한 결과를 모두 더한다.


 ※ 적용예시

         7 5 0 6 1 5 - 1 8 6 2 1 3 3

      *  2 3 4 5 6 7   8 9 2 3 4 5

     ---------------------------------- ①각 자리에 해당숫자를 곱한 후 ②모두 더하기

      = 14 + 15 + 0 + 30 + 6 + 35 + 8 + 72 + 12 + 6 + 4 + 15

      = 217


③ 더해진 결과물을 11로 나눠 『나머지』를 구한다.

217/11 = 19 (나머지8)


④ 11에서 나머지를 뺀 결과값이 주민번호를 구성하는 마지막 숫자와 일치하는지 비교한다.

11 - 8 연산결과 : 3     ==     주민번호 마지막 자리 3 (일치)


⑤ 마지막 숫자와 같은 경우 유효한 주민등록번호이다.


Test101.java

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.IOException;


public class Test101

{

public static void main(String[] args) throws IOException

{

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));


// 입력받은 주민번호

String str;


// check~!!

int[] chk = {2, 3, 4, 5, 6, 7, 0, 8, 9, 2, 3, 4, 5};    - 


// 곱셈 연산 후 누적합

int tot=0;


System.out.print("주민번호 입력(xxxxxx-yyyyyy) : ");

str = br.readLine();


if (str.length() != 14)

{

System.out.println(">> 입력오류~!!!");

return;

}


for (int i=0; i<13; i++)

{

if (i==6)

continue;


tot += chk[i] * Integer.parseInt(str.substring(i, (i+1)));

}


//-- 여기까지 수행하면 ① 과 ② 를 모두 끝낸 상황이다.

//   규칙에 맞게 곱셈 연산을 수행한 결과를 모두 더한 값은

//   변수 tot 에 담겨 있는 상황이 된다.


int su = 11 - tot%11;


//-- 추가연산~!! (최종 결과 출력 전 추가 연산 필요)

//   su에 대한 연산 결과가 두 자리로 나올 경우

//   주민번호 마지막 자릿수와 비교할 수 없는 상황

su = su % 10;


//-- 여기까지 수행하면 ③ 과 ④ 를 모두 끝낸 상황이다.

//   최종 연산 결과는 변수 su 에 담겨 있는 상황이 된다.


// 최종 결과 출력

if (su==Integer.parseInt(str.substring(13)))

System.out.println(">> 정확한 주민번호~!!");

else

System.out.println(">> 잘못된 주민번호~!!");

}

}


cmd

주민번호 입력(xxxxxx-yyyyyy) : 750615-1862133

>> 정확한 주민번호~!!

계속하려면 아무 키나 누르십시오 . . .







728x90

댓글