국비지원 예습과정 1차

Park In Kwon·2022년 8월 7일
0

배열이란?

  • 배열이란 선형 자료구조(Data Structure)중 하나로 동일한 타입의 연관된 데이터를 메모리에 연속적으로 저장하여 하나의 변수에 묶어서 관리하기 위한 자료 구조.

  • 배열은 하나의 변수에 여러 값을 저장하는 데 쓰이는 정적 리스트(static list)이다. 배열의 크기는 long 혹은 short가 아닌 int 값으로 특정되어야 한다. 배열에는 각 저장공간이 연속적으로 배치되어 있으며, 0부터 n-1까지 n개의 값을 특정 위치에 저장한다. 배열의 요소마다 붙여진 일련번호를 인덱스index라고 한다. (같은 타입의 여러 변수를 하나의 묶음으로 다룬다)

  • 배열을 생성할 때엔 괄호[ ] 안에 배열의 길이, 즉 해당 배열에 값을 얼마만큼저장할 수 있는지를 적어준다. 배열의 길이는 0이 될 수도 있다. 자바에서는 JVM이 모든 배열의 길이를 별도로 관리하며, 배열명.length를 통해서 배열의 길이를 알아낼 수 있다.
    * 한번 생성된 배열의 길이는 변경할 수 없다.

    아래에 있는 자바코드는 java 배열 강의를 시청하며 따라해 만들어본 로또 프로그램이다.
    6자리 숫자를 랜덤으로 생성해 1등 부터 5등까지의 당첨자를 만들어보았다.

import java.util.*; // Random + Scanner 두가지 기능을 한번에 (java.util 패키지에 있는 모든 클래스 import)

public class Arrays_lotto {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		Random random = new Random();
		int lottoAr[] = new int[6];
		int userAr[] = new int[6];

		int bonus, bonusUser;
		int count = 0;

		// 로또 배열에 6개의 랜덤값 저장
		for (int i = 0; i < 6; i++) {
			lottoAr[i] = random.nextInt(45) + 1; // 0~44 -> 1~45
		}
		// bonus = random
		bonus = random.nextInt(45) + 1;
		System.out.println("Lotto:" + Arrays.toString(lottoAr) + ",bonus::" + bonus);

		// 사용자에게 6개 값과 보너스를 입력 받기
		System.out.print("숫자 6개 입력: ");
		for (int i = 0; i < 6; i++) {
			userAr[i] = sc.nextInt();
		}
		System.out.print("보너스 값 입력: ");
		bonusUser = sc.nextInt();
		System.out.println("User:" + Arrays.toString(userAr) + ",bonus::" + bonusUser);
		// 로또 배열의 값과 사용자 배열의 값중 같은 값이 있다면 몇개 있는지 카운팅

		for (int j = 0; j < 6; j++) {
			for (int i = 0; i < 6; i++) {
				if (lottoAr[j] == userAr[i]) {
					count++;
				}
			}
		}
		System.out.println("총 맞춘 갯수:" + count);
		// count의 갯수에 따라서 등수 정하기

		if (count == 6) {
			System.out.println("축하합니다! 1등입니다");

		} else if (count == 5) {
			if (bonus == bonusUser) {
				System.out.println("축하드립니다! 2등입니다");
			} else {
				System.out.println("축하합니다! 3등입니다");
			}

		} else if (count == 4) {
			System.out.println("축하합니다! 4등입니다");
		} else if (count == 3) {
			System.out.println("축하합니다! 5등입니다");
		} else {
			System.out.println("아쉽지만 다음 기회에");
		}

	}

}
profile
개발자로 진로 변경을 위해 준비하고 있습니다

0개의 댓글