본문 바로가기
CodeSignal

Sudoku

by Doromi 2024. 1. 31.
728x90
반응형

Sudoku는 9x9 격자를 사용하여 숫자를 채우는 논리 기반의 숫자 퍼즐 게임입니다. 각 행, 각 열, 그리고 3x3 크기의 작은 격자에는 1부터 9까지의 숫자를 중복되지 않게 채워넣어야 합니다. 게임이 시작될 때 일부 셀에는 이미 숫자가 채워져 있습니다.

일반적으로 미리 채워진 숫자는 퍼즐을 해결하는 데 도움이 되며, 유저는 논리적 추론과 수의 배치를 통해 격자를 완성해야 합니다.

게임의 목표는 다음과 같습니다:

각 행에 1에서 9까지의 숫자가 중복 없이 나타나야 합니다.
각 열에 1에서 9까지의 숫자가 중복 없이 나타나야 합니다.
3x3 크기의 작은 격자에 1에서 9까지의 숫자가 중복 없이 나타나야 합니다.
이 규칙을 모든 행, 열 및 작은 격자에 적용하여 퍼즐을 해결합니다. 퍼즐을 완성하려면 각 셀에 적절한 숫자를 할당해야 합니다. 이 규칙을 모든 행, 열 및 작은 격자에 적용하여 퍼즐을 해결합니다.

bool solution(int[][] grid) {
    for(int i = 0;i<9;i++){
        HashSet<int> hash = new HashSet<int>();
        for(int j = 0;j<9;j++){
            if(!hash.Contains(grid[i][j])){
                hash.Add(grid[i][j]);
            }
            else{
                return false;
            }
        }
    }
    for(int i = 0;i<9;i++){
        HashSet<int> hash = new HashSet<int>();
        for(int j = 0;j<9;j++){
            if(!hash.Contains(grid[j][i])){
                hash.Add(grid[j][i]);
            }
            else{
                return false;
            }
        }
    }
    for(int k = 0;k<3;k++){
        HashSet<int> hash = new HashSet<int>();
        for(int i = 0;i<3;i++){
            for(int j = 0;j<3;j++){
                if(!hash.Contains(grid[k*3+i][k*3+j])){
                    hash.Add(grid[k*3+i][k*3+j]);
                }
                else{
                    return false;
                }
            }
        }
    }
    return true;
}
각 행에 중복된 숫자가 없는지 확인:

for(int i = 0; i < 9; i++): 각 행에 대한 루프를 돌면서
HashSet<int> hash = new HashSet<int>();: 각 행의 숫자를 저장하기 위한 HashSet을 만듭니다.
for(int j = 0; j < 9; j++): 해당 행의 각 열에 대한 루프를 돌면서
if(!hash.Contains(grid[i][j])): HashSet에 현재 숫자가 없다면 추가합니다.
else return false;: 이미 HashSet에 있는 숫자라면 중복이므로 false를 반환합니다.
각 열에 중복된 숫자가 없는지 확인:

위의 코드와 유사하게 열에 대한 루프를 돌고 확인합니다.
3x3 작은 격자에 중복된 숫자가 없는지 확인:

for(int k = 0; k < 3; k++): 3x3 격자 그룹에 대한 루프를 돌면서
HashSet<int> hash = new HashSet<int>();: 각 격자 그룹의 숫자를 저장하기 위한 HashSet을 만듭니다.
중첩된 루프로 각 격자에 대한 확인을 수행합니다.
모든 검사를 통과하면 true를 반환:

만약 위의 모든 검사에서 중복이 발견되지 않았다면, 스도쿠 규칙을 잘 따르고 있으므로 true를 반환합니다.
728x90
반응형

'CodeSignal' 카테고리의 다른 글

Late Ride  (0) 2024.02.06
Circle of Numbers  (0) 2024.02.05
spiralNumbers  (0) 2024.01.17
messageFromBinaryCode  (1) 2024.01.14
File Naming  (0) 2024.01.13