ascode 1214 빙고게임 판단하기

2 분 소요

문제 설명

빙고게임을 위한 3 x 3 데이터가 입력될 경우 몇 줄이 맞았는지를 판단하는 프로그램을 작성하자.

입력 설명

첫번째 줄에서 3번째 줄까지 1부터 9까지의 정수로 이루어진 3 x 3 형식의 행렬이 입력된다(중복 입력은 없다). 다음 줄에 빙고 게임에 의해 불려지는 숫자의 개수(N, 1<=N <= 9)이 입력된다. 그 다음 줄에 N개의 정수(1 ~ 9)가 입력된다.

출력 설명

입력이 주어질 경우 가로, 세로, 대각선을 모두 고려해서 몇 줄이 지워진 줄인지를 판단하여 지워진 줄 수를 출력한다.

입력 예시

1 3 8
4 2 9
5 6 7
3
4 2 9

출력 예시

1

코드

#include <stdio.h>

//전역 변수 설정하기
int set = 3;
int a,ar[4][4],input[9];
int i, j;
int count = 0, temp = 0, gr = 0;

void convert() {
	for (int v = 0; v < a; v++)
	{
		for (i = 0; i < 3; i++)
		{
			for (j = 0; j < 3; j++)
			{
				if (input[v] == ar[i][j]) {
					ar[i][j] = 0;
				}
			}
		}
	}
}

void checkBingo() {
	//temp 초기화
	temp = 0;
	//가로 확인
	for (i = 0; i < set; i++)
	{
		temp = 0;
		for (j = 0; j < set; j++)
		{
			if (ar[i][j] == 0) {
				temp++;
			}
		}
		//모두가 일치하면 카운트 하나 추가
		if (temp == set) {
			count++;
			temp = 0;
		}
	}
	//temp 초기화
	temp = 0;
	//세로 확인
	for (i = 0; i < set; i++)
	{
		temp = 0;
		for (j = 0; j < set; j++)
		{
			if (ar[j][i] == 0) {
				temp++;
			}
		}
		//모두가 일치하면 카운트 하나 추가
		if (temp == set) {
			count++;
			temp = 0;
		}
	}
	//temp 초기화
	temp = 0;
	//대각선 확인 (이건 수정중)
	for (int i = 0; i < set; i++)
	{
		if (ar[i][i] == 0) {
			temp++;

		}
		if (i == 2 && temp == set) {
			count++;
			temp = 0;
		}
	}
	//temp 초기화
	temp = 0;
	for (int i = 0; i < set; i++)
	{
		if (ar[i][set - i - 1] == 0) {
			temp++;

		}
		if (i == 2 && temp == set) {
			count++;
			temp = 0;
		}
	}
};


int main() {
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			scanf("%d", &ar[i][j]);
		}
	}

	scanf("%d", &a);
	for (int i = 0; i < a; i++)
	{
		scanf("%d", &input[i]);
	}
	convert();
	checkBingo();

	printf("%d", count);
}

나 : say

이건 수업때 쓴 함수를 다시 썻지(재사용쩸)

댓글남기기