diff --git a/yeongrok/0036-valid-sudoku/0036-valid-sudoku.js b/yeongrok/0036-valid-sudoku/0036-valid-sudoku.js
new file mode 100644
index 0000000..168a2c3
--- /dev/null
+++ b/yeongrok/0036-valid-sudoku/0036-valid-sudoku.js
@@ -0,0 +1,54 @@
+/**
+ * @param {character[][]} board
+ * @return {boolean}
+ */
+var isValidSudoku = function(board) {
+ /* 0 1 2
+ 3 4 5
+ 6 7 8 */
+ const area = [...Array(10).keys()].map(i => ({}));
+
+ const columns = [...Array(10).keys()].map(i => ({}));
+
+ for (let i = 0; i < board.length; i++) {
+ const row = board[i];
+ const appearedInRow = {};
+ for (let j = 0; j < row.length; j++) {
+ if (row[j] !== "." && (row[j] < 1 || row[j] > 9 || appearedInRow[row[j]] || columns[j][row[j]])) return false;
+ appearedInRow[row[j]] = true;
+ columns[j][row[j]] = true;
+
+ let areaNum;
+ if (i < 3) {
+ if (j < 3) {
+ areaNum = 0;
+ } else if (j < 6) {
+ areaNum = 1;
+ } else {
+ areaNum = 2;
+ }
+ } else if (i < 6) {
+ if (j < 3) {
+ areaNum = 3;
+ } else if (j < 6) {
+ areaNum = 4;
+ } else {
+ areaNum = 5;
+ }
+ }
+ else {
+ if (j < 3) {
+ areaNum = 6;
+ } else if (j < 6) {
+ areaNum = 7;
+ } else {
+ areaNum = 8;
+ }
+
+ }
+ if (row[j] !== "." && area[areaNum][row[j]]) return false;
+ area[areaNum][row[j]] = true;
+ }
+ }
+ return true;
+};
diff --git a/yeongrok/0036-valid-sudoku/README.md b/yeongrok/0036-valid-sudoku/README.md
new file mode 100644
index 0000000..1cef237
--- /dev/null
+++ b/yeongrok/0036-valid-sudoku/README.md
@@ -0,0 +1,55 @@
+
Medium
Can you solve this real interview question? Valid Sudoku - Determine if a 9 x 9 Sudoku board is valid. Only the filled cells need to be validated according to the following rules:
+
+ 1. Each row must contain the digits 1-9 without repetition.
+ 2. Each column must contain the digits 1-9 without repetition.
+ 3. Each of the nine 3 x 3 sub-boxes of the grid must contain the digits 1-9 without repetition.
+
+Note:
+
+ * A Sudoku board (partially filled) could be valid but is not necessarily solvable.
+ * Only the filled cells need to be validated according to the mentioned rules.
+
+
+
+Example 1:
+
+[https://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Sudoku-by-L2G-20050714.svg/250px-Sudoku-by-L2G-20050714.svg.png]
+
+
+Input: board =
+[["5","3",".",".","7",".",".",".","."]
+,["6",".",".","1","9","5",".",".","."]
+,[".","9","8",".",".",".",".","6","."]
+,["8",".",".",".","6",".",".",".","3"]
+,["4",".",".","8",".","3",".",".","1"]
+,["7",".",".",".","2",".",".",".","6"]
+,[".","6",".",".",".",".","2","8","."]
+,[".",".",".","4","1","9",".",".","5"]
+,[".",".",".",".","8",".",".","7","9"]]
+Output: true
+
+
+Example 2:
+
+
+Input: board =
+[["8","3",".",".","7",".",".",".","."]
+,["6",".",".","1","9","5",".",".","."]
+,[".","9","8",".",".",".",".","6","."]
+,["8",".",".",".","6",".",".",".","3"]
+,["4",".",".","8",".","3",".",".","1"]
+,["7",".",".",".","2",".",".",".","6"]
+,[".","6",".",".",".",".","2","8","."]
+,[".",".",".","4","1","9",".",".","5"]
+,[".",".",".",".","8",".",".","7","9"]]
+Output: false
+Explanation: Same as Example 1, except with the 5 in the top left corner being modified to 8. Since there are two 8's in the top left 3x3 sub-box, it is invalid.
+
+
+
+
+Constraints:
+
+ * board.length == 9
+ * board[i].length == 9
+ * board[i][j] is a digit 1-9 or '.'.
\ No newline at end of file