[코딩테스트/프로그래머스/Python]방의 개수

Enter·2021년 8월 10일
0

코딩테스트

목록 보기
30/68

💡생각

도저히 어떻게 풀어야할 지 감이 잡히지 않아서 다른 사람의 코드를 봄.



⏬다른사람의 코드

Level5... 아직 제대로 이해하지 못했음.


🔗풀이 참고
https://chldkato.tistory.com/101

from collections import deque

dx = [-1, -1, 0, 1, 1, 1, 0, -1]
dy = [0, 1, 1, 1, 0, -1, -1, -1]

def solution(arrows):
    cnt, dir, q = {}, {}, deque()
    cnt[(0, 0)] = 0
    q.append([0, 0])
    x, y, ans = 0, 0, 0

    for i in arrows:
        for j in range(2):
            nx = x + dx[i]
            ny = y + dy[i]
            cnt[(nx, ny)] = 0
            dir[(x, y, nx, ny)] = 0
            dir[(nx, ny, x, y)] = 0
            q.append([nx, ny])
            x, y = nx, ny

    x, y = q.popleft()
    cnt[(x, y)] = 1
    while q:
        nx, ny = q.popleft()

        if cnt[(nx, ny)] == 1:
            if dir[(x, y, nx, ny)] == 0:
                ans += 1
                dir[(x, y, nx, ny)] = 1
                dir[(nx, ny, x, y)] = 1
        else:
            cnt[(nx, ny)] = 1
            dir[(x, y, nx, ny)] = 1
            dir[(nx, ny, x, y)] = 1
            
        x, y = nx, ny

    return ans







🔗프로그래머스 - 방의 개수
https://programmers.co.kr/learn/courses/30/lessons/49190

profile
Cherish the moment :)

0개의 댓글