20210423

(왜 이런거지?!!!!)

(이거는 또 왜 이런거지!!!!!?!!)

오늘 도서관 자리가 좀 신기한 게!! 내가 앉은 테이블에 오는 사람들이 죄다죄다..! 잔다..
ㅈㄷㅈㄷㅈㄷㅈㄷㅈㄷㅈㄷㅈㄷㅈㄷㅈㄷ잔다죄다잔다죄다

오늘 취준을 마무리하며라는 블로그 포스팅을 읽었는데, 생각이 많아진다.

준비를 똑바로 하고 있나 싶었는데, 아니었던 것 같다..
(제대로 된 준비를 100이라고 하면 나는 한 20?정도)

그나마 블로그랑 깃에 꾸준히 올리는 거 하나만 제대로 하는 거 같다..

내일 코딩테스트 끝나고 정처기 시험 끝나면 깃헙 리드미 파일 좀 깨끗하게 바꾸고.. CS 공부도 제대로 하고..해야할 것 같다!

오늘 1261번 문제를 풀었는데번 문제를 풀었는데 0-1 너비 우선 탐색 을 이용하는데, 이 블로그 포스팅 글을 읽고 단번에 이해가 가서 잊지 않으려고 한다!!

나는 1261을 우선순위 큐로 해결하려고 했는데, 굳이 우선순위 큐 없이 deque의 메소드를 잘 이용하는 것 같아서 위의 방법이 더 좋다고 느껴졌다.

import sys
from collections import deque
input = sys.stdin.readline

# 가로 크기 m, 세로 크기 n
m, n = map(int, input().split())

# 미로의 상태
maze = [list(map(int, list(input().rstrip()))) for _ in range(n)]
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
visited = [[-1] * m for _ in range(n)]

def bfs():
    q = deque()
    q.append([0, 0])
    visited[0][0] = 0
    while q:
        _x, _y = q.popleft()
        
        for i in range(4):
            x = dx[i] + _x
            y = dy[i] + _y
        
            if x < 0 or y < 0 or x >= n or y >= m: continue
            if visited[x][y] != -1: continue
            if maze[x][y] == 0:
                q.appendleft([x, y])
                visited[x][y] = visited[_x][_y]
            elif maze[x][y] == 1:
                q.append([x, y])
                visited[x][y] = visited[_x][_y] + 1
bfs()
print(visited[n-1][m-1])

벽을 뚫을 필요가 없으면 appendleft해서 queue에서 바로 꺼낼 수 있도록 했고, 벽을 뚫었다면 append를 해서 뒤로 보내도록 했다.

좋은 웹페이지 즐겨찾기