본문 바로가기

Algorithm/프로그래머스139

[프로그래머스]탐욕법(Greedy) : 섬 연결하기 (level 3)(c++) https://programmers.co.kr/learn/courses/30/lessons/42861 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr #include #include #include using namespace std; // 노드x가 포함된 트리의 루트노드 가져오기 int get_root(vector &parent, int x) { // x가 노드x의 부모라면 if (x == parent[x]) { return x; } /* 다른 노드가 노드x의 부모라면, 루트노드를 찾을 때까지 재귀함수 호출. 마지막에 노드x의 부모에 해당 루트노드 저장후 반환 */ return parent[x] = get.. 2020. 6. 18.
[프로그래머스]동적계획법(Dynamic Programming) : 등굣길 (level 3)(c++) https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr #include #include using namespace std; const int MOD = 1000000007; int solution(int m, int n, vector puddles) { // 문제에서 m : 행, n : 열로 주어진다. vector ways(m + 1, vector(n + 1)); vector is_puddle(m + 1.. 2020. 6. 18.
[프로그래머스]동적계획법(Dynamic Programming) : 정수 삼각형 (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 #include #include #include using namespace std; const int MAX = 500; int D[MAX + 1][MAX + 1]; int solution(vector triangle) { int N = triangle.size(); /* 점화식 : D[i][j] = tri[i][j]로 올 수 있는 경로의 i - 1번째 최대값 + tri[i][j] */ for (int i = 1; i 2020. 6. 17.
[프로그래머스]동적계획법(Dynamic Programming) : 타일 장식물 (level 3)(c++) https://programmers.co.kr/learn/courses/30/lessons/43104 코딩테스트 연습 - 타일 장식물 대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개�� programmers.co.kr 방법 1: 피보나치(DP) #include #include using namespace std; long long solution(int N) { /* 타일 한변의 길이는 피보나치 수열로 증가 N번째 사각형이 더해진 전체 직사각형의 두 변 : - dp[N] - dp[N + 1] (= dp[N] + dp[N - 1]) */ vector tile(N + 2.. 2020. 6. 16.