diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 1c6fcd9..5116b8f 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,10 +1,15 @@ ## ๋ฌธ์ œ -| Type | Info | -| :----------- | :--- | -| **Platform** | | -| **Level** | | -| **Link** | | +| Type | Info | +| :------------------- | :--- | +| **Time Complexity** | | +| **Space Complexity** | | +| **Algorithm** | | +| **Data Structure** | | + +## Constraints + +## Edge Case ## ํ’€์ด diff --git a/README.md b/README.md index c6b5802..8a85881 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,14 @@ ## ๐Ÿ“œ ์Šคํ„ฐ๋”” ๊ทœ์น™ 1. **์ฃผ 3ํšŒ ๋ฌธ์ œ ํ’€๊ธฐ** + - ์Šคํ„ฐ๋””์› ์ค‘ ํ•œ๋ช…์ด 3๊ฐœ์˜ ๋ฌธ์ œ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. - ๋‚˜๋จธ์ง€ ์Šคํ„ฐ๋””์›๋“ค์€ ์ง€์ •ํ•œ 3๊ฐœ์˜ ๋ฌธ์ œ๋ฅผ ํ’€์ดํ•ฉ๋‹ˆ๋‹ค. - ๋ฌธ์ œ ํ’€์ด ์ฝ”๋“œ๋ฅผ ๊ฐ์ž์˜ GitHub ๋ธŒ๋žœ์น˜(`๊นƒํ—ˆ๋ธŒ์•„์ด๋””/๋ฌธ์ œ-์ด๋ฆ„`)์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. - PR(Pull Request)์„ ํ†ตํ•ด ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. 2. **์ฃผ๊ฐ„ ๋ฌธ์ œ ํ’€์ด ๋ฆฌ๋ทฐ** - - **์ผ์‹œ**: ๋งค์ฃผ ํ† ์š”์ผ ์˜ค์ „ 10์‹œ 30๋ถ„ + - **์ผ์‹œ**: ๋งค์ฃผ ํ† ์š”์ผ ์˜ค์ „ 11์‹œ - **์ง„ํ–‰ ๋ฐฉ์‹**: ๋น„๋Œ€๋ฉด (์˜จ๋ผ์ธ) - **๋ฌธ์ œ ํ’€์ด ๋ฐœํ‘œ์ž**: ๋งค์ฃผ ๋žœ๋ค์œผ๋กœ ์„ ์ • diff --git a/suhwan2004/Shortest Bridge.js b/suhwan2004/Shortest Bridge.js new file mode 100644 index 0000000..5b62c22 --- /dev/null +++ b/suhwan2004/Shortest Bridge.js @@ -0,0 +1,54 @@ +/* +N === grid.length +Time : O(N^3), Space : O(N^2) +ALGO : DFS, for +DS : Array +Constraints + - 2 <= grid.length <= 100 + - grid[i][j] is either 0 or 1 +*/ + +const LAND = 1 +const VISITED_LAND = 2 +var shortestBridge = function (grid) { + let arr = []; + let arr2 = []; + for (let i = 0; i < grid.length; i++) { + for (let j = 0; j < grid[i].length; j++) { + if (grid[i][j] == LAND) { + if (arr.length == 0) { + grid[i][j] = VISITED_LAND; + dfs(grid, i, j, arr); + } else { + grid[i][j] = VISITED_LAND; + dfs(grid, i, j, arr2); + } + } + } + } + + let val = 0; + let min = Infinity; + for (let i = 0; i < arr.length; i++) { + for (let j = 0; j < arr2.length; j++) { + val = + Math.abs(arr2[j][0] - arr[i][0]) + Math.abs(arr2[j][1] - arr[i][1]) - 1; + min = Math.min(min, val) + } + } + return min; +}; + +function dfs(grid, i, j, arr) { + arr.push([i, j]); + const directions = [[-1, 0], [1, 0], [0, -1], [0, 1]]; + + for(let direction of directions){ + const newI = direction[0] + i; + const newJ = direction[1] + j; + if(newI >= 0 && newI < grid.length && newJ >= 0 && newJ < grid[0].length && grid[newI][newJ] === LAND){ + grid[newI][newJ] = VISITED_LAND; + dfs(grid, newI, newJ, arr) + } + } +}