백준 [7569] 토마토 - 이차원 배열 풀이

2차원 탐색을 3차원으로 확장한 문제.
3차원 배열로 초기화해서 풀 수 있지만 같은 팀원이 2차원 배열로 시도해서 도와 줬다.

2차원 배열로 풀기 위해서 배열을 [(높이)*(세로), (가로)] 로 초기화 한뒤 x좌표의 경계조건을 아래와 같이 설정해준다.

방향 벡터를 다음과 같이 정의할 때

// N은 세로
dx = [1, -1, 0, 0, N, -N]
dy = [0, 0, 1, -1, 0, 0]

새로 탐색할 좌표가 주어진 (세로) 범위에서 벗어나면 탐색을 생략한다.

for i in range(6):
    nx, ny = x+dx[i], y+dy[i]
    // 상자의 가장 위 행보다 전으로 갈 수 없다.
    if i == 0 and x%N == N-1:
        continue
    // 상자의 가장 아래 행보다 다음으로 갈 수 없다.
    if i == 1 and x%N == 0:
        continue

좋은 웹페이지 즐겨찾기