상세 컨텐츠

본문 제목

로또 번호 생성

프로그래밍 언어/Java(자바)

by kky2 2023. 1. 16. 10:00

본문

*  배열을 활용하여 다음과 같은 프로그램을 만들어 봅시다.

실행 환경 : Eclipse


코드를 작성하기 앞서 어떤 순서로 진행될지 논리적 흐름을 정해봅시다.

* 흐름

  1. 사용자로부터 받고 싶은 행운번호의 개수를 입력받는다.
  2. 정수를 데이터타입으로 가지는 길이가 6인 배열을 생성한다.
  3. 반복문을 시작하고 배열의 각 방에 1~45사이의 숫자를 생성하여 순서대로 저장한다.
  4. 만약, 배열에 저장된 값들 중 중복된 수가 생성되면 다시 생성하여 중복되지 않는 수를 저장한다.
  5. 작은 수부터 차례대로 오도록 배열의 요소를 정렬한다.
  6. 배열의 요소를 출력한다.
  7. 가장 위에서 입력받았던 받고 싶은 행운번호의 개수만큼 로또번호를 출력하고 프로그램을 종료한다.

 

* 자, 순서가 정해졌으니 코드로 옮겨볼까요?

 

A. import 하기

  •     입력을 받기 위한 객체를 생성하기 위해 Scanner클래스를 import 합니다.

 

B. 변수 정하기

  •     int  num                              →    출력하고 싶은 행운번호 개수
  •     int  cnt                                →    카운트 값
  •     int  lotto[ ]                           →    로또번호를 저장하는 정수 배열

 

C. 반복문

  •     위에서 정해놓은 순서대로 반복이 되도록 실행될 내용의 흐름대로 코딩합니다.
  •     cnt 값을 이용하여 입력한 수만큼 반복되도록 코딩합니다.

 

D. 소스코드 작성

public static void main(String[] args) {

	Scanner scan = new Scanner(System.in);		//입력받기 위한 Scanner 객체 생성
	System.out.print("받고 싶은 행운번호의 개수를 입력해주세요: ");
	int num = scan.nextInt();			//입력받은 숫자를 저장
	int cnt = 1;					//코드 실행의 카운트값
	System.out.println("================================");
		
	while(cnt <= num) {				//1부터 받고 싶은 행운번호의 개수만큼을 반복
		int lotto[] = new int[6];		//번호 6개짜리 배열 생성
			
        	//1~45 숫자 생성 및 저장
		for (int i = 0; i < lotto.length; i++) {
        		//Math.random()을 통해 1~45 사이의 난수 생성
			lotto[i] = (int)(Math.random()*45 + 1);		
				
			//중복제거
			for (int j = 0; j < i; j++) {
				if(lotto[i] == lotto[j]) {
                			//이전과 중복된 값이 있다면 다시 새로운 숫자를 생성하여 저장
					i--;					
					break;
				}
			}
		}
			
		//정렬
		for (int i = 0; i < lotto.length; i++) {
			for (int j = i+1; j < lotto.length; j++) {
            			//옆 방에 값과 비교해서 큰수를 오른쪽으로 이동
				if(lotto[i] > lotto[j]) {
					int temp = lotto[j];
					lotto[j] = lotto[i];
					lotto[i] = temp;
				}
			}
		}
		
		//배열의 각 요소를 출력
		System.out.print(" *오늘의 행운번호["+cnt+"]: ");
		for (int k = 0; k < lotto.length; k++) {
			System.out.print(lotto[k]+" ");			
		}
		System.out.println();
		cnt++;			//카운트값을 증가
	}
}

※ [보너스] 더 간단하게 만들어보기(feat. 컬렉션)

  • 컬렉션이란? : 여러 원소들을 담을 수 있는 자료구조.
  • " TreeSet "은 중복되지 않는 데이터만 저장하며 정렬된 상태로 저장되어진다. (중복 제거 + 정렬)
public static void main(String[] args) {
	Scanner scan = new Scanner(System.in);		//입력받기 위한 Scanner 객체 생성
	System.out.print("받고 싶은 행운번호의 개수를 입력해주세요: ");
	int num = scan.nextInt();			//입력받은 숫자를 저장
	int cnt = 1;					//코드 실행의 카운트값
	System.out.println("================================");
	
	while(cnt <= num) {				//1부터 받고 싶은 행운번호의 개수만큼을 반복
		TreeSet<Integer> ts = new TreeSet<>();	//TreeSet객체 생성
		
		for (int i = 0; ts.size() < 6; i++) {
           		//Math.random()을 통해 1~45 사이의 난수 생성하고 TreeSet객체에 추가
			ts.add((int)(Math.random()*45 + 1));
		}	
		
		//배열의 각 요소를 출력
		System.out.print(" *오늘의 행운번호["+cnt+"]: ");
        
        	//향상된 for문
		for (Integer number : ts) {
			System.out.print(number + " ");
		}
		System.out.println();
		cnt++;
	}
}

 

똑같은 예제라도 쉽고 효율적으로 할 수 있다는 말씀!    (feat. 당첨되면 연락주세요~)

 

 

* 재밌는 예제를 통해서 쉽게 배워봅시다.  - 끝 -

관련글 더보기

댓글 영역