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 |