원리 · intermediate

행렬·격자: 인덱싱과 방문

r/c 범위, 4방 탐색, 방문 배열을 실수 없이 다루는 기초.

배우기 · 알고리즘 원리 · 16분 · 12/14 · 행렬 · BFS

이 트랙 목차 (14)
  1. 1. 시간·공간 복잡도 (Big-O) 제대로 읽기
  2. 2. 투포인터: 양끝·같은방향
  3. 3. 해시맵·해시셋: 빠른 조회
  4. 4. 스택·큐: LIFO와 FIFO
  5. 5. 재귀와 이분 탐색
  6. 6. 슬라이딩 윈도우
  7. 7. 동적 계획법 입문 (DP)
  8. 8. 누적합·차분 배열
  9. 9. 그래프 탐색: BFS·DFS
  10. 10. 정렬을 언제 쓰나: 전처리·이분·그리디
  11. 11. 그리디: 탐욕 선택과 반례
  12. 12. 행렬·격자: 인덱싱과 방문
  13. 13. 비트 연산 기초: AND OR XOR · 플래그
  14. 14. 우선순위 큐·힙 감각

좌표계

보통 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] 또는 Setr,c 키.

BFS와의 연결

격자 최단 거리는 대체로 BFS. 배우기 BFS·DFS 레슨과 같이 보세요.
DFS는 섬 개수·연결 요소에 자주 씁니다.

함정

한 줄

> 격자 = 이중 루프 + 경계 가드 + 방문. 경로 길이는 BFS.

체크리스트

  1. R·C를 입력/격자에서 어떻게 얻는가
  2. 시작 칸이 여러 개인가 (가장자리·모든 1)
  3. 방문 표시 시점 (큐에 넣을 때 vs 꺼낼 때)
  4. 출력은 좌표·개수·격자 중 무엇인가

섬/경로 문제를 하나 골라 4방 배열을 그대로 복사해 연습하세요.

예: 섬의 개수

for 각 칸 (i,j):
  if grid[i][j]=='1' and not visited:
    BFS/DFS로 연결된 '1' 전부 방문
    count += 1

방문 배열을 따로 두거나, 방문한 10으로 바꿔도 됩니다 (원본 보존이 필요하면 복사).

한 줄

> 격자 = 그래프. 4방 배열 + 방문 + 시작점 루프.

관련 짧은 원리

관련 문제