본문 바로가기
algorithm/SW Expert Academy

[2차원 배열 연습 문제] 스도쿠 검증 - 1974

by 에어컨조아 2020. 1. 8.

문제 : https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

코드 : 

#include <iostream>

using namespace std;

int num[9][9] = { 0 };

bool solution()
{
	//가로행 탐색
	for (int i = 0; i < 9; i++)
	{
		bool check[10] = { false };
		for (int j = 0; j < 9; j++)
		{
			if (check[num[i][j]])
			{
				return false;
			}
			check[num[i][j]] = true;
		}
	}
	//세로행 탐색
	for (int j = 0; j < 9; j++)
	{
		bool check[10] = { false };
		for (int i = 0; i < 9; i++)
		{
			if (check[num[i][j]])
			{
				return false;
			}
			check[num[i][j]] = true;
		}
	}

	// 3*3 묶음 탐색
	for (int k = 0; k < 9; k += 3)
	{
		bool check[10] = { false };
		for (int i = 0; i < 3; i++)
		{
			for (int j = 0; j < 3; j++)
			{
				if (check[num[k + i][k + j]])
				{
					return false;
				}
				check[num[k + i][k + j]] = true;
			}
		}
	}
	return true;
}

int main()
{
	int T;
	cin >> T;

	int c = 0;
	while (c < T)
	{
		for (int i = 0; i < 9; i++)
		{
			for (int j = 0; j < 9; j++)
			{
				cin >> num[i][j];
			}
		}
		int v = solution();
		c++;
		cout << "#" << c << " " << v << "\n";
	}
	return 0;
}

댓글