Coding Test/programmers

[프로그래머스] 등굣길 - python (레벨 3)

조용장 2022. 5. 29. 23:05

https://programmers.co.kr/learn/courses/30/lessons/42898

 

코딩테스트 연습 - 등굣길

계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m =

programmers.co.kr

풀이

문제를 보았을때 알수있는 힌트

오른쪽, 아래로만 움직이는 문제이며 웅덩이가 있는 곳은 지나가지 않는 문제이다.

dfs,bfs로 풀면 아마 시간 초과가 날 확률이 높을것이다.

이것은 dp로 풀어야한다.

시작하는 위치에서 오른쪽 왼쪽으로 이동시킬수있는 갯수를 추가하는 형식으로 진행하면 쉽게 풀 수 있는 문제이다.

 

def solution(m, n, puddles):
    answer = 0
    graph = [[0 for _ in range(m)] for _ in range(n)]
    
    for x,y in puddles:
        graph[y-1][x-1]=-1
    
    graph[0][0]=1
    for x in range(n):
        for y in range(m):
            # 오른쪽이 있는지 확인하기
            if graph[x][y]!=-1:
                if y+1<m and graph[x][y+1]!=-1:
                    graph[x][y+1] = (graph[x][y]+graph[x][y+1])%1000000007
                if x+1<n and graph[x+1][y]!=-1:
                    graph[x+1][y] = (graph[x][y] +graph[x+1][y])%1000000007
            
    answer=graph[n-1][m-1]
    return answer

https://github.com/dydwkd486/coding_test/blob/main/programmers/등굣길.py 

 

GitHub - dydwkd486/coding_test: 코딩테스트 공부한 내용 정리

코딩테스트 공부한 내용 정리. Contribute to dydwkd486/coding_test development by creating an account on GitHub.

github.com