728x90
오늘은 두 가지 실생활에서 유용할 수 있는 프로그램을 다뤄보겠습니다. 첫 번째는 로또 번호 예측 프로그램으로, 무작위로 생성된 숫자들을 중복 없이 정렬하여 출력하는 프로그램입니다. 두 번째는 주민등록번호 유효성 검사 프로그램으로, 입력된 주민등록번호의 유효성을 검사하는 알고리즘을 구현합니다. 두 프로그램 모두 Java 언어를 사용하여 실습할 수 있으며, 각 문제의 해결 과정을 통해 중요한 프로그래밍 기법들을 익힐 수 있습니다.
로또 예측 프로그램과 주민등록번호 유효성 검사
1. 로또 번호 예측 프로그램
로또 번호 예측 프로그램은 무작위로 생성된 6개의 번호가 중복되지 않도록 처리하고, 오름차순으로 정렬하여 출력하는 프로그램입니다.
프로그램 설명
- 먼저, 6개의 로또 번호를 무작위로 생성합니다. 이 때, 각 번호는 1부터 45 사이의 정수입니다.
- 중복된 번호가 생성되면, 해당 번호를 다시 생성하여 중복을 제거합니다.
- 중복 제거 후, 오름차순으로 번호를 정렬하여 출력합니다.
public class Lotto {
public static void main(String[] args) {
// 로또 번호 예측 프로그램
int[] lotto = new int[6];
// 값 넣기
for (int i = 0; i < lotto.length; i++) {
lotto[i] = (int)(Math.random() * 45) + 1;
}
// 중복값 제거
for (int i = 0; i < lotto.length - 1; i++) {
for (int j = i + 1; j < lotto.length; j++) {
if (lotto[i] == lotto[j]) {
lotto[j] = (int)(Math.random() * 45) + 1;
}
}
}
// 로또번호 출력
System.out.print("로또번호 : ");
for (int i = 0; i < lotto.length; i++) {
System.out.print(lotto[i] + " ");
}
}
}
핵심 포인트
- Math.random() 메소드를 이용하여 랜덤 숫자를 생성하고 있습니다.
- 중복 제거는 2중 for 문을 사용하여 비교한 후, 중복이 발견되면 새로운 값을 다시 넣습니다.
- 로또 번호가 완성되면 그 값을 출력합니다.
2. 주민등록번호 유효성 검사 프로그램
주민등록번호 유효성 검사 프로그램은 주민등록번호가 올바른지 확인하는 프로그램입니다. 이 프로그램은 각 자리에 정해진 값(2~5번 위치 등)을 곱하고, 그 값을 합산하여 특정 규칙에 맞는지 확인합니다.
프로그램 설명
- 주민등록번호의 앞 12자리에 각각 정해진 곱셈 값을 곱하고, 그 결과를 모두 합산합니다.
- 합산된 값을 11로 나눈 나머지를 이용해 마지막 자리가 유효한지 확인합니다.
import java.util.Scanner;
public class RegisNum {
public static void main(String[] args) {
// 주민등록번호 유효성검사
int[] check = {2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5}; // 각 자리에 곱할 값 배열에 저장
int sum = 0;
int lastNum = 0;
Scanner sc = new Scanner(System.in);
System.out.print("주민등록번호를 하이픈 없이 입력하세요 : ");
String id = sc.next();
// 각 자리에 2 3 4 5 6 7 8 9 2 3 4 5 를 곱하고 모두 더함.
for (int i = 0; i < id.length() - 1; i++) {
sum += Integer.parseInt(id.substring(i, i + 1)) * check[i];
}
// 11로 나눈 나머지 값을 구함
// 11에서 결과값을 뺌. (단, 결과가 10이상이면 10으로 나눈 나머지 값을 다시 구함)
lastNum = 11 - (sum % 11);
if (lastNum >= 10) {
lastNum = lastNum % 10;
}
// 마지막 결과가 주민등록번호 마지막 자리와 일치하면 유효한 주민등록번호
if (lastNum == Integer.parseInt(id.substring(12, 13))) {
System.out.println("유효한 주민등록번호입니다.");
} else {
System.out.println("유효하지 않은 주민등록번호입니다.");
}
}
}
핵심 포인트
- 주민등록번호의 각 자리에 대해 주어진 값을 곱한 후 합산하고, 11로 나눈 나머지를 계산합니다.
- 나머지를 기반으로 11에서 뺀 값을 최종적으로 계산하여 주민등록번호의 마지막 자리가 일치하는지 확인합니다.
이번에 구현한 두 프로그램은 실생활에서 유용하게 사용할 수 있는 예시입니다. 로또 번호 예측 프로그램은 무작위 숫자 생성과 중복 제거, 정렬을 다루며, 주민등록번호 유효성 검사 프로그램은 기본적인 숫자 계산과 규칙을 따르는 프로그래밍을 배울 수 있습니다. 이 프로그램들을 통해 Java의 기본적인 배열 처리, 조건문, 반복문 등 중요한 프로그래밍 개념들을 복습하고 실습할 수 있습니다.
앞으로도 이런 실생활과 관련된 문제를 풀어나가면서 더 많은 프로그래밍 기술을 익히고, 알고리즘의 구현 능력을 키울 수 있습니다. 계속해서 다양한 문제를 풀어보며 실력을 쌓아가세요!
728x90
'Java' 카테고리의 다른 글
[Java] 객체 지향 프로그래밍 - 학생 성적 관리 시스템 (0) | 2022.04.12 |
---|---|
[Java] 절차 지향 프로그램 vs 객체 지향 프로그래밍 (0) | 2022.04.12 |
[Java] 메소드 예제(사칙연산 메소드 작성) (0) | 2022.04.12 |
[Java] 메소드의 중요성 (0) | 2022.04.12 |
[Java] 배열(Array)과 String 클래스의 사용법 (0) | 2022.04.11 |