본문 바로가기
Study/Java

[Java] 주민등록번호 유효성 검사

by 오늘만 사는 여자 2021. 12. 14.
728x90
반응형

◎주민등록번호 검증 공식

 

1. 마지막 자리를 제외한 앞자리 수를 규칙에 맞게 곱한다.

 

123456 - 1234567(=> 주민번호)

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

234567 892345(-> 각 자리에 곱해질 수)

 

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

  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

----------------------------------1. 각 자리에 해당숫자를 곱한 후 2. 모두 더하기

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

  = 217

 

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

217 / 11 = 19(나머지 8)

 

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

11 - 8 = 3 = 주민번호 마지막 자리 3

 

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

public String checkJuminNumber() throws IOException {

		// BufferedReader 클래스 인스턴스 생성
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		// 입력받은 주민번호
		String str;

		// 곱해지는 수 배열 구성
		int[] chk = { 2, 3, 4, 5, 6, 7, 0, 8, 9, 2, 3, 4, 5 };

		// - check~!!!
		// 곱셈 연산 후 누적합
		int tot = 0;

		// 사용자에게 안내 메세지 출력 및 주민번호 입력받기
		System.out.print("주민번호 입력(xxxxxx-xxxxxxx) : ");
		str = br.readLine();

		if (str.length() != 14) {
			return ">> 입력 오류~~!!!";
		}

		// 확인
		// System.out.println(">> 자릿수 적합~!!!");

		for (int i = 0; i < chk.length; i++) {
			if (i == 6)
				continue;

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

		// -- 여기까지 수행하면 ① 과 ② 를 모두 끝낸 상황이며
		// 규칙에 맞게 곱셈 연산을 수행한 결과를 모두 더한 값은
		// 변수 tot 에 담겨있는 상태가 된다.
		int su = 11 - tot % 11;

		// -------
		// ----------
		// 확인
		// System.out.println(su);
		// --==>> 11

		// 최종 결과 출력 이전에 추가 연산 필요~!!!
		// -> su에 대한 연산 결과가 두 자리로 나올 경우
		// 주민번호 마지막 자릿수와 비교할 수 없는 상황
		if (su >= 10) {
			su %= 10;
		}

		// -- 여기까지 수행하면 ③ 과 ④ 를 모두 끝낸 상황이며
		// 최종 연산 결과는 변수 su 에 담겨있는 상황이 된다.

		// 최종 결과 출력

		if (su == Integer.parseInt(str.substring(13))) {
			System.out.println(">> 정확한 주민번호~!!!");
			return ">> 정확한 주민번호~!!!";
		} else {
			System.out.println(">> 잘못된 주민번호~!!!");
			return ">> 잘못된 주민번호~!!!";
		}

	}

 

참조 : https://simuing.tistory.com/entry/JAVA-Test101-%EC%A3%BC%EB%AF%BC%EB%B2%88%ED%98%B8-%EC%9C%A0%ED%9A%A8%EC%84%B1-%EA%B2%80%EC%82%AC-%EA%B3%B5%EC%8B%9D

 

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

Test101  주민번호 유효성 검사 공식  ※ 공식  123456-1234567 (주민번호) -------- --------    234567 892345 (각 자리에 곱해질 수 『234567 892345』, 마지막수는 곱하지 않는다.)  규칙에 맞게 곱셈..

simuing.tistory.com

https://godjaejun.tistory.com/66

 

728x90
반응형

댓글