DP

프로그래머스 문제풀이/LEVEL 3

[프로그래머스 / Level 3] 정수 삼각형 (C++)

https://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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18..

프로그래머스 문제풀이/LEVEL 3

[프로그래머스 / Level 3] 등굣길 (C++)

https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 해당 좌표까지 갈 수 있는 경우의 수들을 합쳐서 풀 수 있는 문제입니다. 문제 접근법 시작점을 기준으로 오른쪽 아래쪽으로만 움직일 수 있으므로, 시작점 모든 우측열과 시작점 모든 아래행을 1로 체크한다. 시작점 모든 우측열과 아래행을 확인하며 물이 발견시 그 부분부터 모든 부분을 0으로 바꾸어준다. 오른쪽과 아래쪽만으로 움직일 수 있으므로, 도착지 기..

프로그래머스 문제풀이/LEVEL 3

[프로그래머스 / Level 3] 2 x n 타일링

https://programmers.co.kr/learn/courses/30/lessons/12900 코딩테스트 연습 - 2 x n 타일링 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 programmers.co.kr 문제 접근법 2xn의 직사각형이 있을 때 마지막에 1x2 타일이 없다고 가정하면 그 직사각형은 가로길이 n-1까지의 경우의 수 라고 볼 수 있다. 같은 경우로 2x1 짜리 타일이 없으면 가로길이 n-2까지의 경우의 수 라고 볼 수 있다. DP[N](2xn 까지의 경우의 수) = DP[N-1] + DP[N-2]가 성립한다. 아래는 코드입니다. 1 2 ..

백준 문제풀이/SILVER

[백준 / BOJ / SILVER 3] 11727 번 : 2xn 타일링 2

https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 문제 접근법 점화식을 세워 접근 하면 된다. 2xn의 직사각형이 있을 때 마지막에 1x2 타일이 없다고 가정하면 그 직사각형은 가로길이 n-1까지의 경우의 수 라고 볼 수 있다. 같은 경우로 2x1 짜리 타일이 없으면 가로길이 n-2까지의 경우의 수 라고 볼 수 있다. 단, 2x1 타일 대신 2x2 타일을 사용할 수도 있으므로 DP[N](2xn 까지의 경우의 수) = DP[N-1] + DP[N-2] * 2가 성립한다. 아래는 ..

백준 문제풀이/SILVER

[백준 / BOJ / SILVER 3] 11726 번 : 2xn 타일링

https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 문제 접근법 점화식을 세워 접근 하면 된다. 2xn의 직사각형이 있을 때 마지막에 1x2 타일이 없다고 가정하면 그 직사각형은 가로길이 n-1까지의 경우의 수 라고 볼 수 있다. 같은 경우로 2x1 짜리 타일이 없으면 가로길이 n-2까지의 경우의 수 라고 볼 수 있다. DP[N](2xn 까지의 경우의 수) = DP[N-1] + DP[N-2]가 성립한다. 아래는 코드입니다. 1 2 3 4 5 6 7 8 9 10 11 1..

백준 문제풀이/SILVER

[백준 / BOJ / SILVER 3] 1463 번 : 1로 만들기

https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 접근법 제일 작은 수 부터 X까지 갈때의 경우의 수를 구한다. 해당하는 배열에 가장 작은 경우의 수를 넣는다. 아래는 코드입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include #include using namespace std; int check[1000001]; int main() { check[1] = 0; int n; scanf("%d", &n); for (int i = 2; i

백준 문제풀이/SILVER

[백준 / BOJ / SILVER 1] 15989 번 : 1, 2, 3 더하기 4

https://www.acmicpc.net/problem/15989 15989번: 1, 2, 3 더하기 4 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 4가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다. 1+1+1+1 2+1+1 (1+1+2, 1+2+1) 2+2 1+3 (3+1) 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 접근법 이전의 만들 수 있는 방법의 수에 그 다음 수가 추가 되었을 경우 만들 수 있는 경우의 수를 추가하는 방식으로 진행한다. 아래는 코드입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ..

백준 문제풀이/SILVER

[백준 / BOJ / SILVER 3] 9095 번 : 1, 2, 3 더하기

https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 www.acmicpc.net 문제 접근 방법 여러가지 방식으로 풀 수 있는 문제입니다. n중 for문을 사용하여 구할수도 있고, 재귀를 이용해서도 구할 수..

지나가던 개발자
'DP' 태그의 글 목록