Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 10 additions & 5 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
## 문제

| Type | Info |
| :----------- | :--- |
| **Platform** | |
| **Level** | |
| **Link** | |
| Type | Info |
| :------------------- | :--- |
| **Time Complexity** | |
| **Space Complexity** | |
| **Algorithm** | |
| **Data Structure** | |

## Constraints

## Edge Case

## 풀이

Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@
## 📜 스터디 규칙

1. **주 3회 문제 풀기**

- 스터디원 중 한명이 3개의 문제를 지정합니다.
- 나머지 스터디원들은 지정한 3개의 문제를 풀이합니다.
- 문제 풀이 코드를 각자의 GitHub 브랜치(`깃허브아이디/문제-이름`)에 업로드합니다.
- PR(Pull Request)을 통해 코드 리뷰를 진행합니다.

2. **주간 문제 풀이 리뷰**
- **일시**: 매주 토요일 오전 10시 30분
- **일시**: 매주 토요일 오전 11시
- **진행 방식**: 비대면 (온라인)
- **문제 풀이 발표자**: 매주 랜덤으로 선정

Expand Down
54 changes: 54 additions & 0 deletions suhwan2004/Shortest Bridge.js
Original file line number Diff line number Diff line change
@@ -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)
}
}
}
Loading