본문 바로가기

동적계획법

(3)
[Programmers/Level 3/Java] 정수 삼각형 Programmers(프로그래머스) 정수 삼각형 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr 문제 설명 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 한다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동이 가능하다. 풀이 동적계획법(Dynamic Programming)의 가장 기본이 되는 문제이다. '경로'를 찾는다기 보다는, 거쳐간 숫자의 '누적 합'이 큰 경우를 찾는 문제라고 생각하면 된다. 코드는 다음과 같이 구현하였다. class Solution { public int solution(int[][..
[Programmers/Level 3/Java] 2 x n 타일링 Programmers(프로그래머스) 2 x n 타일링 코딩테스트 연습 - 2 x n 타일링 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 �� programmers.co.kr 문제 설명 가로 길이가 2이고 세로 길이가 1인 직사각형 모양의 타일을 가지고 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우는 방법의 수를 구하라. 풀이 아래 백준 11726번 2×n 타일링 풀이 참고하자. 조건만 조금 다를 뿐, 동일한 문제이다. [Baekjoon/Silver 3/Java] 11726번: 2×n 타일링 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2..
[Baekjoon/Silver 3/Java] 11726번: 2×n 타일링 Baekjoon(백준) 11726번: 2×n 타일링 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 문제 설명 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하라. 풀이 처음 생각한 풀이는 N을 1 또는 2로 이루어진 조합으로 만드는 형태로 접근을 했었는데, (예: 4 -> 1+1+1+1 / 2+1+1 / 1+2+1 / 1+1+2 / 2+2) 수가 커질 수록 수행 시간도 빠르게 증가할 것 같다는 생각이 들어 다른 풀이를 생각해야 했다. 한참을 고민하다가 결국 다른 사람의 풀이를 보았는데, 타일의 조합에서 다음..