반응형
코드
import java.util.*;
import java.lang.*;
import java.io.*;
class Main {
public static void main(String[] args) {
// 스도쿠 게임 구현
final int SIZE = 3; // 스도쿠 배열의 크기 (행과 열)
int[][] sudoku = new int[SIZE][SIZE];
int[] iCnt = new int[10]; // 숫자 0~9의 등장 횟수를 저장할 배열
List<Integer> randomList = new ArrayList<>(); // 랜덤 번호를 담을 List
// 랜덤 번호 생성
getRandomNo(randomList);
// 스도쿠 배열에 랜덤 숫자를 채워넣고 출력
printSudokuNo(randomList, sudoku, SIZE);
// 0의 위치와 각 숫자의 등장 횟수 구하기
findZeroLocation(iCnt, sudoku, SIZE);
// 0에 들어갈 수 구하기
findZeroValue(iCnt);
}
// 랜덤 번호 생성 함수 (0부터 9까지)
public static void getRandomNo(List<Integer> randomList){
// 0은 필수적으로 포함되므로 먼저 추가
randomList.add(0);
// 1 ~ 9의 숫자를 랜덤하게 추가
int firstIdx = 1; // (개인 스타일 : 반복문은 초기값을 0으로 시작하는 것이 좋으므로 변수로 따로 빼서 처리함)
for (int i = firstIdx; i < 10; ++i){
randomList.add(i);
}
// 리스트를 랜덤하게 섞기
Collections.shuffle(randomList);
}
// 스도쿠 배열에 랜덤 숫자를 넣고 출력하는 함수
public static void printSudokuNo(List<Integer> randomList, int[][] sudoku, int SIZE){
int index = 0;
for (int i = 0; i < SIZE; ++i) {
for (int j = 0; j < SIZE; ++j) {
sudoku[i][j] = randomList.get(index);
index++;
System.out.print(sudoku[i][j] + "\t"); // 현재 값 출력
}
System.out.println();
}
}
// 스도쿠 배열에서 0의 위치와 각 숫자의 등장 횟수를 구하는 함수
public static void findZeroLocation(int[] iCnt, int[][] sudoku, int SIZE){
int findRow; // 0의 행 위치
int findCol; // 0의 열 위치
// 스도쿠 배열을 순차적으로 확인
for (int i = 0; i < SIZE; ++i) {
for (int j = 0; j < SIZE; ++j) {
int counter = sudoku[i][j]; // 현재 숫자를 저장
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에 들어갈 수 구하는 함수
public static void findZeroValue(int[] iCnt){
int missNo; // 0에 들어갈 숫자
// 등장 횟수가 0인 숫자를 찾아서 출력
for (int i = 0; i < iCnt.length; ++i) {
if (iCnt[i] == 0) {
missNo = i;
System.out.println("0에 들어갈 숫자는 " + missNo);
}
}
}
}
- getRandomNo 함수
- ArrayList 배열을 사용하여 랜덤 번호를 생성하도록 처리
- 랜덤번호 : 0 - 필수 포함, 1 ~ 9 - Collections.shuffle() 사용하여 섞기
- printSudokuNo 함수
- 랜덤 숫자를 꺼내고 스도쿠 배열에 저장
- findZeroLocation 함수
- 숫자 0의 위치와 등장 횟수 구하기
- findZeroValue 함수
- 0에 들어갈 수 구하기
반응형
'프로그래밍 > Spring Boot 프로젝트' 카테고리의 다른 글
[Spring Boot 프로젝트] 스도쿠 게임 프로그래밍 - 2 (7) | 2024.11.17 |
---|---|
[Spring Boot 프로젝트] 스도쿠 게임 프로그래밍 - 1 (10) | 2024.11.08 |
항공사 플랫폼 팀 프로젝트_RestTemplate 국가 API 활용 국적 가져오기 (0) | 2023.07.18 |
항공사 플랫폼 팀 프로젝트_비밀번호 변경 기능(BCrypt 라이브러리 사용) (0) | 2023.07.16 |
항공사 플랫폼 팀 프로젝트_마이그레이션 후 쿼리문 수정 (0) | 2023.07.16 |