Problem Solving

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

Isaac S. Lee 2023. 8. 1. 10:55
package com.test.question;

import java.util.Scanner;

public class Q085 {
	public static void main(String[] args) {
		/*
		● 요구사항
		주민 등록 번호 유효성 검사를 하시오.
		
		● 조건
		- '-'의 입력 유무 상관없이 검사하시오.
		
		● 입력 1
		주민등록번호: 951220-1021547
		
		● 출력 1
		올바른 주민등록번호입니다.
		
		● 입력 2
		주민등록번호: 951220-1234567
		
		● 출력 2
		올바르지 않은 주민등록번호입니다.
		*/
		
		Scanner scan = new Scanner(System.in);
		
		String jumin; // 주민 등록 번호
		int[] digit = new int[14]; // 검증 번호
		int pass;
		
		// 주민 등록 번호 입력
		System.out.print("주민등록번호: ");
		jumin = scan.nextLine();
		jumin = jumin.replace("-", ""); // 주민 등록 번호 '-' 제거
		
		// digit[]에 순차적으로 주민 등록 번호 저장
		for (int i=0; i<13; i++) {
			digit[i] = Integer.parseInt(jumin.substring(i, i+1));
			// System.out.println(digit[i]);
		}
		
		// 주민 등록 번호 유효성 검사
		pass = (11 - ((2 * digit[0]
					+ 3 * digit[1]
					+ 4 * digit[2]
					+ 5 * digit[3]
					+ 6 * digit[4]
					+ 7 * digit[5]
					+ 8 * digit[6]
					+ 9 * digit[7]
					+ 2 * digit[8]
					+ 3 * digit[9]
					+ 4 * digit[10]
					+ 5 * digit[11]) % 11)) % 10;
		
		if (pass == 10) {
			pass = 0;
		} else if (pass == 11) {
			pass = 1;
		}
		
		// 주민 등록 번호 결과 검증 및 출력
		if (pass == Integer.parseInt(jumin.substring(12, 13))) {
			System.out.println("올바른 주민등록번호입니다.");			
		} else {
			System.out.println("올바르지 않은 주민등록번호입니다.");
		}
		
		scan.close();
		
		// System.out.println(pass);
		// System.out.println(Integer.parseInt(jumin.substring(12, 13)));
	}
}