본문 바로가기

프로그래밍/Spring Boot 프로젝트

[Spring Boot 프로젝트] 스도쿠 게임 프로그래밍 - 2

반응형

베이스 코드

import java.util.*;
import java.lang.*;
import java.io.*;

// The main method must be in a class named "Main".
class Main {
    public static void main(String[] args) {
        
        // 스도쿠 게임 프로그래밍
        int[][] sudoku = {{1, 4, 2}, {5, 6, 8}, {3, 0, 7}}; 
        final int SIZE = 3; // 스도쿠 배열의 행과 열 크기
        int[] iCnt = new int[10]; // 숫자 0~9의 등장 횟수 저장할 배열
        int findRow; // 0의 행 위치
        int findCol; // 0의 열 위치
        int missNo;  // 0에 들어갈 수

        // 스도쿠 배열 출력
        for (int i = 0; i < SIZE; ++i) {
            for (int j = 0; j < SIZE; ++j) { 
                System.out.print(sudoku[i][j] + "\t"); // 현재 값 출력
            }
            System.out.println();
        }

        // 0의 위치, 숫자 등장 횟수 구하기
        for (int i = 0; i < SIZE; ++i) {
            for (int j = 0; j < SIZE; ++j) {

                int counter = sudoku[i][j]; // 현재 값을 counter에 저장
                iCnt[counter]++; // 인덱스에 접근하여 등장 횟수 증가
                
                // 0의 위치 구하기
                if (sudoku[i][j] == 0) { 
                    findRow = i;
                    findCol = j;
                    System.out.printf("0은 %d 행 %d 열에 있습니다.\n", findRow, findCol);
                }
            }
            System.out.println();
        }

        // 0에 들어갈 수 구하기
        for (int i = 0; i < iCnt.length; ++i) { 
            if (iCnt[i] == 0) {
                missNo = i;
                System.out.println("0에 들어갈 숫자는 " + missNo);
            }
        }
    }
}

 

카운팅 배열

: 특정 값의 등장 수(빈도)를 셈

	int[] iCnt = new int[10]; // JAVA는 배열 생성시 자동으로 0이 초기화 됨

        for (int i = 0; i < SIZE; ++i) {
            for (int j = 0; j < SIZE; ++j) {

                int counter = sudoku[i][j]; // 현재 값을 counter에 저장
                iCnt[counter]++; // 인덱스에 접근하여 등장 횟수 증가
                
            }
            System.out.println();
        }

 
 

결과

 
 
 
현재는 스도쿠 숫자를 초기화 시켜놓은 상태, 3일차에 랜덤 번호 생성하여 값을 구할 수 있도록 수정할 예정

반응형