[알고리즘] 백준 2178 미로탐색

hoya.a·2022년 6월 14일
0

알고리즘

목록 보기
8/10
post-thumbnail

나의 컨닝.. 역시나 못풀었다.. 다음문제는 안보고 풀어야지

from collections import deque

#입력을 일단 받아야해요 n이랑m이랑 받을거 잖아?
n, m = map(int, input().split())
#그다음 맵 정보를 받아야 할거 아니야
graph = []
for i in range(n):
    graph.append(list(map(int, input())))

#조이스틱 구현(상, 하, 좌, 우)
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]

def bfs(x, y):

    queue = deque()
    queue.append((x, y))

    while queue:
        x, y = queue.popleft()
        # 현재 위치에서 4가지 방향으로 위치 확인
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]

            # 미로찾기 공간을 벗어나면 무시
            if nx < 0 or nx >= n or ny < 0 or ny >= m:
                continue
            # 벽인 경우 무시
            if graph[nx][ny] == 0:
                continue
            # 해당 노드를 처음 방문하는 경우에만 최단 거리 카운팅
            if graph[nx][ny] == 1:
                graph[nx][ny] = graph[x][y] + 1
                queue.append((nx, ny))
    # 가장 오른쪽 아래까지의 최단 거리 리턴
    return graph[n - 1][m - 1]

print(bfs(0, 0))

몰랐던 파이썬 문법정리

튜플 자료형

튜플은 리스트와 거의 비슷하며 다른점은

  • 리스트는 []로 둘러싸지만 튜플은 ()로 둘러싼다.
  • 리스트는 그 값의 생성, 삭제, 수정이 가능하지만 튜플은 값을 바꿀 수 없다.

t1 = ()
t2 = (1,)
t3 = (1, 2 ,3)
t4 = 1, 2, 3
t5 = ('a', 'b', ('ab', 'cd'))

  • 1개의 요소만을 가질 때는 요소뒤에 콤마(,)를 붙여야한다.
  • 괄호 생략 가능

패킹과 언패킹

  • 패킹은 말그대로 묶는다는 뜻, 언패킹은 묶여있는 것을 풀어내는 뜻
  • 튜플로 값을 묶는 것을 튜플 패킹,
  • 튜플로 묶여있는 값을 풀어내는 것을 튜플 언패킹이라 한다.
profile
TIL 정리

0개의 댓글