profile
차근차근 하나씩
post-thumbnail

[Algorithm Champions] Week 4, No.3

문제 풀이 인접하지 않은 숫자들을 더한 최대 값을 반환하는 문제이다. 점화식을 세워 dp로 문제를 풀었다. array의 맨 처음부터 끝까지 돌면서 확인한다. 현재 인덱스까지의 숫자들을 비교하여 더할 수 있는 가장 큰 값을 새로운 배열에 넣는다. 이렇게 넣은 값을 비교하면서 바로 직전 값이 큰지, 아니면 두개 전 값에 현재 값을 더한 것이 큰지 비교하여 큰 값을 새로운 배열의 현재 인덱스에 넣는다. 새로운 배열의 맨 마지막 값을 반환하면 가장 큰 값이 나오게 된다. 예시) 새로운 배열 b b[0] = 75 (본인 값이 제일 크므로 그대로.) b[1] = max(a[0], a[1]) = 105 (두 값 중 큰 값 하나만 고를 수 있음

2021년 7월 9일
·
0개의 댓글
·
post-thumbnail

[Algorithm Champions] Week 4, No.1

문제 풀이 왼쪽 상단에서 우측 하단까지 가는 방법의 수를 구하는 문제이다. 우측 하단(목적지)에서 시작하여 좌측 상단(시작점)으로 올라가는 경우의 수를 셌다. (dp) for문으로 모든 셀들을 돈다. 우측 하단(목적지)를 우선 1로 초기화를 해둔다. 위로 한칸씩 가면서 해당 칸으로 갈 수 있는 방법의 수를 센다. 해당 칸으로 갈 수 있는 방법의 수를 더해가면 최종 장소에는 시작점부터 목적지까지 가는 방법의 수를 구할 수 있다. >해당 칸(x,y)으로 갈 수 있는 방법의 수 = 아래 칸(x,y+1)으로 갈 수 있는 방법의 수 + 오른쪽 칸(x+1,y)으로 갈 수 있는 방법의 수 값을 더할 때 아래와 오른쪽의 칸들이 표의 범위 내에 있는지 확

2021년 7월 9일
·
0개의 댓글
·