티스토리 뷰

 

def dfs(y, x):
    global each
    each += 1
    for k in range(4):
        ny = y + dy[k]
        nx = x + dx[k]
        if 0<=ny<N and 0<=nx<N:
            if map[ny][nx] == 1 and chk[ny][nx] == False:
                chk[ny][nx] = True
                dfs(ny, nx)

for j in range(N):
    for i in range(N):
        if map[j][i] == 1 and chk[j][i] == False:
            chk[j][i] = True
            each = 0
            dfs(j,i)
            result.append(each)

Q. 이러한 dfs알고리즘 구현 코드가 있다고 칠때 이때 dfs에서 (y,x)로 받아주잖아 그런데 이걸 (x,y)로 받아주면안되는거야? 왜 y부터 받아주는거야?

A. dfs 함수에서 (y, x)로 받아주는 이유는 보통 행(row)을 먼저 처리하고 열(column)을 나중에 처리하는 방식을 따르기 때문입니다. 이 방식은 대부분의 프로그래밍 언어에서 행 우선 순회(row-major order)를 따르는 관행입니다.

행(row)은 보통 수직 방향으로 이동하고, 열(column)은 수평 방향으로 이동하기 때문에 좌표를 (y, x)로 받아들이는 것이 직관적입니다. 이렇게 하면 코드가 좀 더 이해하기 쉬워집니다.

또한, 다른 프로그래머와 협업할 때 행과 열을 헷갈리지 않도록 하기 위해 일반적으로 이러한 관행을 따릅니다. 따라서 (y, x) 순서로 좌표를 받아들이는 것이 좋은 습관입니다.


참조

https://github.com/ChangguHan/codingtestbasic/blob/master/BJ2667.py

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함