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
>> 정확한 주민번호~!!
계속하려면 아무 키나 누르십시오 . . .
'Study Note > Java' 카테고리의 다른 글
JAVA_ Test103_ 정렬(sort) 알고리즘 / 버블 정렬(Bubble Sort) (0) | 2018.06.14 |
---|---|
JAVA_ Test102_ 정렬(sort) 알고리즘 / 선택정렬(Selection Sort) (0) | 2018.06.04 |
JAVA_ Test100_ 만년달력 (2) | 2018.05.29 |
이클립스 에러해결 The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path (21) | 2018.05.21 |
JAVA_ Test099_ 배열의 복사 / 임의의 배열(a, b)에 들어 있는 숫자들의 합집합을 출력하는 프로그램 (0) | 2018.05.13 |
댓글