본문 바로가기
관리자

Computer Science/Algorithm

Prm 6 : Sudoku / parseInt, [...Array().keys()].slice()

728x90
반응형

sudoku

문제

스도쿠는 숫자 퍼즐로, 가로 9칸, 세로 9칸으로 이루어져 있는 표에 1부터 9까지의 숫자를 채워 넣는 퍼즐입니다. 퍼즐을 푸는 방법은 아홉 가로줄, 세로줄, 3X3 칸에 1에서 9까지의 숫자를 중복되지 않게 한 번씩만 넣으면 됩니다. 일부 칸이 비어있는 상태인 스도쿠 보드를 입력받아 스도쿠 퍼즐이 완성된 보드를 리턴해야 합니다.

입력

인자 1 : board

  • 가로 길이(board[i].length)와 세로 길이(board.length)가 모두 9인 2차원 배열
  • matrix[i][j]는 1 이상 9 이하의 자연수

출력

  • 가로와 세로의 길이가 모두 9인 2차원 배열을 리턴해야 합니다.

주의사항

  • 입력으로 주어지는 board를 직접 수정해도 상관없습니다.
  • 입력으로 주어지는 board 가지고 완성시킬 수 있는 보드는 유일(unique)합니다.
  • 숫자가 입력되지 않은 칸은 편의상 0이 입력되어 있습니다.

입출력 예시

let board =

[ [0, 3, 0, 2, 6, 0, 7, 0, 1],

[6, 8, 0, 0, 7, 0, 0, 9, 0],

[1, 9, 0, 0, 0, 4, 5, 0, 0],

[8, 2, 0, 1, 0, 0, 0, 4, 0],

[0, 0, 4, 6, 0, 2, 9, 0, 0],

[0, 5, 0, 0, 0, 3, 0, 2, 8],

[0, 0, 9, 3, 0, 0, 0, 7, 4],

[0, 4, 0, 0, 5, 0, 0, 3, 6],

[7, 0, 3, 0, 1, 8, 0, 0, 0], ];

 

let output = sudoku(board); console.log(output); // -->

/* [ [4, 3, 5, 2, 6, 9, 7, 8, 1],

[6, 8, 2, 5, 7, 1, 4, 9, 3],

[1, 9, 7, 8, 3, 4, 5, 6, 2],

[8, 2, 6, 1, 9, 5, 3, 4, 7],

[3, 7, 4, 6, 8, 2, 9, 1, 5],

[9, 5, 1, 7, 4, 3, 6, 2, 8],

[5, 1, 9, 3, 2, 6, 8, 7, 4],

[2, 4, 8, 9, 5, 7, 1, 3, 6],

[7, 6, 3, 4, 1, 8, 2, 5, 9], ]; */

 

 

 


내가 푼 방법

콘솔에서는 정답을 찾아냈지만, 코드스테이츠의 환경에서는 시간초과가 발생하였다.

 

 

 


 

Ref. 코드

 

너무 복잡해서 이해가 안된다.. 특히 num = board[row][index]로 실제 board의 값을 지정하고, 이것을 왜 [num]의 index 형태로 쓰는지 잘 모르겠다..

 

 

 


 

배운점

 

2차원 배열에서는 x, y를 row, col로 지정하는게 보기가 좋다.

728x90
반응형

'Computer Science > Algorithm' 카테고리의 다른 글

Prm 8 : LargestProductOfThree / sort  (0) 2021.01.04
Prm 7 : tree DFS / recursion  (0) 2021.01.04
BubbleSort  (0) 2020.12.29
Prm 3 : Subset  (0) 2020.12.28
Prm 2 : fibonacci  (0) 2020.12.27