Loading...

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

programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 무난한 DP문제이다. 오른쪽과 아래로만 갈 수 있으므로 dp연산을 할 때 윗 좌표값, 왼쪽 좌표값만 고려해주면 된다. def solution(m, n, puddles): dp = [[0] * m for _ in range(n)] dp[0][0] = 1 # 물에 잠긴 곳은 -1 넣어줌 if puddles: for i in puddles: dp[i[1] - 1][i[0..

[Python] 프로그래머스 - 정수 삼각형

programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr 1. 먼저 triangle 배열과 같은 모양의 dp 2차원 배열을 만든다. 2. 마지막 줄부터 올라갈 것이므로 dp의 마지막줄은 triangle의 마지막 줄과 같게 만들어준다. 3. 마지막에서 두번째 줄부터해서 dp[i][j]에 (밑의 두 숫자 중 큰 값 + triangle[i][j]값)을 넣어준다. 4. 최종적으로 맨 윗줄에 최댓값이 저장되므로 dp[0][0]을 return해준다. def solution(triangle): length = len(t..

[Python] BOJ 1520 - 내리막 길(DFS + DP)

www.acmicpc.net/problem/1520 1520번: 내리막 길 첫째 줄에는 지도의 세로의 크기 M과 가로의 크기 N이 빈칸을 사이에 두고 주어진다. 이어 다음 M개 줄에 걸쳐 한 줄에 N개씩 위에서부터 차례로 각 지점의 높이가 빈 칸을 사이에 두고 주어진다. www.acmicpc.net (0, 0)에서 (M-1, N-1)까지 이동 가능한 경로의 수를 모두 구해야 하기 때문에 단순히 DFS로는 풀 수 없고, DP를 통해 메모이제이션까지 써야 한다. 1. N * M크기의 지도 m을 입력받고, dp배열을 만들고 -1로 채운다. 2. dp[i][j] = (i, j)까지 이동하는 경로의 수 3. (M-1, N-1)부터 상하좌우 방향을 탐색하며 dp[x][y]에 dfs(nx, ny)값을 더해준다. ->..