![[programmers] 프로그래머스 Level3 등굣길(파이썬 Python)](https://blog.kakaocdn.net/dna/BNwCn/btriCEFW1RH/AAAAAAAAAAAAAAAAAAAAAEELeQBd5UUDHtsyuPwZBd9F7zkHJbxcmFIb0ZHAyPnH/img.jpg?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1764514799&allow_ip=&allow_referer=&signature=7nplqZrL2DBElxvuphLrFWRKFb4%3D)
[programmers] 프로그래머스 Level3 등굣길
(파이썬 Python)
* 문제출처 : 프로그래머스 코딩 테스트 연습, 알고리즘 문제
1) 문제
코딩테스트 연습 - 등굣길
계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m =
programmers.co.kr
2) 코드
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
 | 
 def is_puddle(m, n, puddles) : 
    for puddle in puddles : 
        puddle_m = puddle[0] 
        puddle_n = puddle[1] 
        if (m == puddle_m) and (n == puddle_n) : 
            return True 
    return False 
def solution(m, n, puddles): 
    array = [[0] * 110 for i in range(110)] 
    array[1][1] = 1 
    for i in range(1, m + 1) : 
        for j in range(1, n + 1) : 
            if (is_puddle(i, j, puddles) == True) : 
                array[j][i] = 0 
            else : 
                array[j][i] = (array[j - 1][i] + array[j][i - 1] + array[j][i]) % 1000000007 
    return array[n][m] 
 | 
cs | 
3) 풀이 과정
1) Dp로 풀어야겠다는 감이 온다.(Dp문제이기 때문에 Dp로 푼다 X)
판단 근거?) 이전 길들의 최단경로의 합을 바탕으로 최종 도착지 까지의 최단경로의 합을 구한다.
| 1 | 1 | 1 | 1 | |||
| 1 | 0 | 1 | 2 | |||
| 1 | 1 | 2 | 4 | |||
2) 배열의 크기를 넉넉히 +10 까지 잡아준다.
1<= m,n <= 100 이기 때문에 110으로 넉넉히 설정
4) 정리 노트
* Dp(Dynamic Programming)
-> "부분의 정답을 가지고 점진적으로 전체 정답을 구하는 방법"
* 파이썬에서 2차원 배열 설정 방법?
1) [0] * n for i in range(n)
2) Numpy
'*Algorithm > Programmers_Level3' 카테고리의 다른 글
| [programmers] 프로그래머스 Level3 2 x n 타일링(파이썬 Python) (1) | 2021.10.10 | 
|---|---|
| [programmers] 프로그래머스 Level3 네트워크(파이썬 Python) (0) | 2021.07.31 | 
| [programmers] 프로그래머스 Level3 단어 변환(파이썬 Python) (1) | 2021.07.25 | 
										
									
										
									
										
									
댓글