전체 글 124

DP(Dynaminc Programming)-3

문제. https://www.acmicpc.net/submit/11727 로그인 www.acmicpc.net 방법. 백준 문제 11726에서 2x2의 블럭이 추가된 문제이다. 이것 또한 그림을 그리면서 풀었다. n 갯수 식 1 1 arr[1] = 1 2 3 arr[2] = 3 3 5 arr[3] = arr[2] + 2 * arr[1] 4 11 arr[4] = arr[3] + 2 * arr[2] 5 21 arr[5] = arr[4] + 2 * arr[3] 6 43 arr[6] = arr[5] + 2 * arr[4] 따라서 arr[i] = arr[i-1] + (2 * arr[i-2])이라는 점화식을 얻을 수 있습니다. 코드로 나타내면, int DP(int a) { if (a == 1) return arr[1..

DP(Dynaminc Programming)-2

문제. https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 방법. n을 입력 받았을 때 1x2나 2x1로 2xn을 남은 공간없이 가득 채워야 한다. 직접 그림을 그려 가면서 확인해본 결과, n 갯수 식 1 1 arr[1] = 1 2 2 arr[2] = 2 3 3 arr[3] = arr[1] + arr[2] 4 5 arr[4] = arr[2] + arr[3] 5 8 arr[5] = arr[3] + arr[4] 6 13 arr[6] = arr[4] + arr[5] 따라서 ..

DP(Dynaminc Programming)-1

백준 1463 문제. https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 방법. 점화식을 찾고 그 점화식을 코드에 적용시키면 된다. 내가 접근한 방식은 일단 규칙을 찾을려고 노트에 하나씩 봤다. i 최소 횟수 식 1 0 arr[1] = 0 2 1 arr[2] = 1 3 1 arr[3] = 1 4 2 arr[4] = 1 + arr[i / 2] 5 3 arr[5] = 1 + arr[i - 1] 6 2 arr[6] = 1 + arr[i / 3] or 1 + arr[i / 2] 7 3 arr[7] = 1 + arr[i - 1] 8 3 arr[8] = 1 + arr[i ..

입출력_문제_1

백준 10951 문제 https://www.acmicpc.net/problem/10951 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 방법. 이 문제는 받는 수의 끝을 알 수 없기에 입력에서 더 이상 읽을 데이터가 존재하지 않을 때 반복문을 끝내면 된다. 처음에 내가 풀었던 방식. #include using namespace std; int main() { int a, b; while (!cin.eof()) { cin >> a >> b; cout a >> b).eof()) { cout