종합 실습문제

DONI·2021년 8월 16일
0

Java

목록 보기
21/46
post-thumbnail

문제

사용자로부터 빙고판의 크기를 입력 받아 지정된 수의 가로 × 세로 빙고판에 1부터 가로 × 세로의 값까지의 수를 랜덤하게 발생시켜 빙고판을 만드시오. 다만 중복되는 수는 없어야 하며, 숫자를 선택하면 해당 칸이 0으로 바뀌고 3줄이 빙고가 되면(가로, 세로, 대각선 모두 포함) 프로그램을 종료하시오.


입출력 예시


소스코드

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("빙고판 크기 지정 : ");
		int num = sc.nextInt();
		int arr[] = new int[num * num];
		
		for (int i = 0; i < arr.length; i++) {
			arr[i] = (int)(Math.random() * arr.length) + 1;
			for (int j = 0; j < i; j++) {
				if (arr[i] == arr[j]) {
					i--;
					break;
				}
			}
		}
		
		int bingo[][] = new int[num][num];
		int index = 0;
		System.out.println("======= 빙고 게임 시작 =======");
		for (int i = 0; i < num; i++) {
			for (int j = 0; j < num; j++) {
				bingo[i][j] = arr[index++];
				System.out.print(bingo[i][j] + "\t");
			}
			System.out.println();
		}

		while (true) {
			System.out.print("숫자 선택 : ");
			int drop = sc.nextInt();
			for (int i = 0; i < num; i++) {
				for (int j = 0; j < num; j++) {
					if (bingo[i][j] == drop)
						bingo[i][j] = 0;
					System.out.print(bingo[i][j] + "\t");
				}
				System.out.println();
			}
			
			int left = 0;
			int right = 0;
			int count = 0;
			for (int i = 0; i < num; i++) {
				int row = 0;
				int col = 0;
				for (int j = 0; j < num; j++) {
					if (bingo[i][j] == 0) row++;
					if (bingo[j][i] == 0) col++;
					if (i == j && bingo[i][j] == 0) left++;
					if ((i + j) == num - 1 && bingo[i][j] == 0) right++;
				}
				if (row == num) count++;
				if (col == num) count++;
			}
			if (left == num) count++;
			if (right == num) count++;
			if (count >= 3) break;
		}
		System.out.println("======= 빙고 게임 종료 =======");
		sc.close();
	}
}
profile
틀린 내용이 있다면 댓글 또는 이메일로 알려주세요 ❤ꔛ❜

0개의 댓글