빙고 만들기

최우정·2022년 5월 19일
0
post-thumbnail


ARRAY 문제 출제

  1. 빙고를 맞추면 숫자가 나오는 판을 만들어봅시다.

  2. 2차원 배열에 무작위 값을 1부터 25까지 대입합니다.

  3. 1차원 배열에 10개의 값 (1부터 25 사이)을 받습니다.

  4. 두 배열을 비교하여 값이 있다면 그 값을 빙고판 표에 나타내고

값이 없다면 *로 나타냅니다.

  1. (두 값 비교는 boolean 메소드를 만들어 비교합니다.)
package test;

import java.util.Scanner;

public class bingo {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);

		int num[] = new int[25]; // 중복 제거를 위한 1차원 배열 생성
		int index = 0;
		int bingo[][] = new int[5][5];
		int insert[] = new int[10]; // 입력 받을 값

		for (int i = 0; i < num.length; i++) {
			num[i] = (int) (Math.random() * 25 + 1); // 1차원 배열에 대입
			for (int j = 0; j < i; j++) { // 값이 같을 경우
				if (num[i] == num[j]) {
					i--; // i를 감소시켜 다시 대입
					break;
				}
			}
		}

		for (int y = 0; y < bingo.length; y++) { // 1차원 배열 2차원 배열에 대입
			for (int x = 0; x < bingo[y].length; x++) {
				bingo[y][x] = num[index++];
			}
		}

		System.out.println("10번 동안 1~25번 내의 숫자를 입력하세요");
		for (int i = 0; i < insert.length; i++) {
			insert[i] = in.nextInt();
			if (insert[i] > 25 || insert[i] < 0) { // 1에서 25 사이가 아닐 경우
				System.out.println("1~25 사이의 숫자가 아닙니다. 다시 입력해주세요");
				i--;
			}
		}

		for (int y = 0; y < bingo.length; y++) { // 값을 비교하자
			for (int x = 0; x < bingo.length; x++) {

				if (star(bingo, insert, y, x)) // 참이면 값이 나오고 거짓이면 "*"가 나오도록
					System.out.printf("%3d", bingo[y][x]);
				else
					System.out.printf("%3c", '*');
			}
			System.out.println();
		}
	}

	static boolean star(int[][] bingo, int[] insert, int y, int x) { // 2차원 배열과 1차원 배열을 비교해서 참, 거짓으로 분류
		for (int i = 0; i < 10; i++) {
			if (bingo[y][x] == insert[i])
				return true;
		}
		return false;
	}
}

+입력받은 값에 중복이 있는지도 확인하는 것을 추가해보아야겠다.

profile
비전공자 Java, JavaScript, Html, Css, C++ 공부중

0개의 댓글