본문 바로가기
Algorithm/동적계획법

[프로그래머스 lv 3] 등굣길

by HANNI하니 2023. 6. 2.

사용 언어 - Python3

문제 - 등굣길

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

정답

DP 규칙 찾기 (정답 맞춘 여부 X) 

0. input

puddles <= n,m으로 바꿔주기

0으로 채워진 n*m 리스트 dq 생성

dq[1][1] = 1 첫 시작점은 1로 채워주기

 

2. dq 진행

오른쪽 아래로만 이동하기 때문에, 두가지 경우가 있다.

같은 행 왼쪽에서 오는 경우 & 윗 행에서 내려오는 경우

2.1. 예외처리

[1,1]은 지나가기 continue

만약 지나가는 길에 puddles이 있다면 0으로 만든다.

2.2. 현재까지 값을 더해주면서 경로 이동

가장 마지막 도착했을 때 값 return

def solution(m, n, puddles):
    answer = 0
    puddles = [[q,p] for [p,q] in puddles]
    dq = [[0]*(m+1) for _ in range(n+1)]
    dq[1][1] = 1
    
    for i in range(1,n+1):
        for j in range(1,m+1):
            if i == 1 and j == 1: continue
            if [i,j] in puddles:
                dq[i][j] = 0
            else:
                dq[i][j] = (dq[i][j-1] + dq[i-1][j]) % 1000000007

    return dq[n][m]

 

 

 

 

레퍼런스

  • 정답 풀이
 

[프로그래머스] 등굣길 / Python

문제주소 :programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지

dev-note-97.tistory.com

  • 깃허브
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

댓글