좌표계
보통 grid[r][c]에서 r은 행(세로), c는 열(가로).
높이 R = grid.length, 너비 C = grid[0].length.
for (let r = 0; r < R; r++) {
for (let c = 0; c < C; c++) {
// grid[r][c]
}
}
4방 이동
const dirs = [[1,0],[-1,0],[0,1],[0,-1]];
for (const [dr, dc] of dirs) {
const nr = r + dr, nc = c + dc;
if (nr < 0 || nr >= R || nc < 0 || nc >= C) continue;
}
경계를 먼저 검사하세요. 방문 배열 seen[R][C] 또는 Set에 r,c 키.
BFS와의 연결
격자 최단 거리는 대체로 BFS. 배우기 BFS·DFS 레슨과 같이 보세요.
DFS는 섬 개수·연결 요소에 자주 씁니다.
함정
grid[0]이 비어 있을 때C접근seen을 안 찍어 무한 루프- 행/열을 뒤집어 출력 형식과 불일치
한 줄
> 격자 = 이중 루프 + 경계 가드 + 방문. 경로 길이는 BFS.
체크리스트
- R·C를 입력/격자에서 어떻게 얻는가
- 시작 칸이 여러 개인가 (가장자리·모든
1) - 방문 표시 시점 (큐에 넣을 때 vs 꺼낼 때)
- 출력은 좌표·개수·격자 중 무엇인가
섬/경로 문제를 하나 골라 4방 배열을 그대로 복사해 연습하세요.
예: 섬의 개수
for 각 칸 (i,j):
if grid[i][j]=='1' and not visited:
BFS/DFS로 연결된 '1' 전부 방문
count += 1
방문 배열을 따로 두거나, 방문한 1을 0으로 바꿔도 됩니다 (원본 보존이 필요하면 복사).
한 줄
> 격자 = 그래프. 4방 배열 + 방문 + 시작점 루프.