SWEA 1974 스도쿠 검증

2020. 10. 29. 17:21·알고리즘/SWEA

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Psz16AYEDFAUq&categoryId=AV5Psz16AYEDFAUq&categoryType=CODE

 

SW Expert Academy

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

swexpertacademy.com

 

9x9 판이 주어지면 가로, 세로, 3x3 구간에 각 숫자들이 1 ~ 9까지 들어있는지 확인하는 문제다.

깡 구현 문제인데 가로, 세로는 쉽게 구현할 수 있고 3x3 사이즈도 조금만 생각해보면 쉽게 풀린다.

 

#include <bits/stdc++.h>
using namespace std;

int ar[9][9];
bool vis[9];

bool chk() { //가로
	int sum = 0;
	for (int i = 0; i < 9; ++i) {
		sum = 0;
		for (int j = 0; j < 9; ++j) {
			sum += ar[i][j];
		}
		if (sum != 45) return false;
	}
	return true;
}

bool chk2() { //세로
	int sum = 0;
	for (int i = 0; i < 9; ++i) {
		sum = 0;
		for (int j = 0; j < 9; ++j) {
			sum += ar[j][i];
		}
		if (sum != 45) return false;
	}
	return true;
}

bool chk3(int x, int y) { //3x3
	fill(vis, vis + 9, false);
	for (int i = x; i < x + 3; ++i) {
		for (int j = y; j < y + 3; ++j) {
			if (vis[ar[i][j] - 1]) return false;
			vis[ar[i][j] - 1] = true;
		}
	}
	return true;
}

int main() {
	//ios::sync_with_stdio(false); cin.tie(0);

	int TC;
	cin >> TC;
	
	for (int tc = 1; tc <= TC; ++tc) {
		for (int i = 0; i < 9; ++i) {
			for (int j = 0; j < 9; ++j) {
				cin >> ar[i][j];
			}
		}

		bool end = false;
		if (!chk()) {
			cout << '#' << tc << ' ' << 0 << '\n'; continue;
		}
		if (!chk2()) {
			cout << '#' << tc << ' ' << 0 << '\n'; continue;
		}
		for (int i = 0; i <= 6; i += 3) {
			for (int j = 0; j <= 6; j += 3) {
				if (!chk3(i, j)) {
					end = true; break;
				}
			}
			if (end) break;
		}
		if (end) {
			cout << '#' << tc << ' ' << 0 << '\n'; continue;
		}
		cout << '#' << tc << ' ' << 1 << '\n';

	}

	return 0;
}

 

가로와 세로 부분은 각 줄의 합이 45가 아니라면 잘못된 스도쿠니까 0을 출력시켜주고 chk3 함수에서 3x3은

각 숫자들이 방문했는지 vis 배열을 통해서 처리해줬다.

'알고리즘 > SWEA' 카테고리의 다른 글

SWEA 숫자 배열 회전  (0) 2020.10.30
SWEA 1859 백만 장자 프로젝트  (0) 2020.10.28
'알고리즘/SWEA' 카테고리의 다른 글
  • SWEA 숫자 배열 회전
  • SWEA 1859 백만 장자 프로젝트
khyu2
khyu2
  • khyu2
    dev log
    khyu2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘
        • BOJ
        • Programmers
        • Algorithm
        • SWEA
      • 개발
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    구현
    SWEA
    이분 탐색
    냅색
    우선순위 큐
    MST
    분할 정복
    피사노 주기
    BOJ
    코딩테스트 연습
    팰린드롬
    크루스칼
    시뮬레이션
    알고리즘
    트리
    완전탐색
    GREEDY
    큐
    프로그래머스
    dp
    이분탐색
    다익스트라
    dfs
    피보나치 수
    소수
    유니온 파인드
    행렬 제곱
    BFS
    조합
    완전 탐색
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
khyu2
SWEA 1974 스도쿠 검증
상단으로

티스토리툴바