본문 바로가기

Algorithm/프로그래머스139

[프로그래머스] Summer/Winter Coding(2019) : 종이접기 (level 3) (c++) https://programmers.co.kr/learn/courses/30/lessons/62049 코딩테스트 연습 - 종이접기 직사각형 종이를 n번 접으려고 합니다. 이때, 항상 오른쪽 절반을 왼쪽으로 접어 나갑니다. 다음은 n = 2인 경우의 예시입니다. 먼저 오른쪽 절반을 왼쪽으로 접습니다. 다시 오른쪽 절반을 왼쪽�� programmers.co.kr #include #include using namespace std; /* 1 0 2 0 0 1 3 0 0 1 0 0 1 1 4 0 0 1 0 0 1 1 0 0 0 1 1 0 1 1 ... */ void go(vector &v, int depth, int n) { if (depth == n) { return; } // n번째 수열은 0을 중앙에 두고.. 2020. 6. 22.
[프로그래머스]연습문제 : 2 x n 타일링 (level 3)(c++) https://programmers.co.kr/learn/courses/30/lessons/12900 코딩테스트 연습 - 2 x n 타일링 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 �� programmers.co.kr DP #include #include using namespace std; const long long MOD = 1000000007; const int MAX = 60000; long long D[MAX + 1]; int solution(int n) { D[0] = 1; D[1] = 1; // 점화식 : D[n] = D[n - 1] + D[n.. 2020. 6. 22.
[프로그래머스]그래프 : 가장 먼 노드 (level 3)(c++) https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr c++ 코드 #include #include #include #include using namespace std; int bfs_get_max_dist_cnt(vector & adj_list, int n) { // 0번노드에서 거리 1부터 시작 // (거리가 0이 아니면 방문한 것으로 판단하기 위해) vector dists(n); queue q; q.push({0, 1}); dists[0] = 1; int max_dist = 0; .. 2020. 6. 22.
[프로그래머스]그래프 : 순위 (level 3)(c++) https://programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr * Floyd-Warshall 알고리즘 활용 방법 1: 상태를 3가지로 나누기 - LOSE, UNKNOWN, WIN #include #include using namespace std; enum { LOSE = -1, UNKNOWN, WIN }; int solution(int n, vector results) { /* Floyd-Warshall 알고리즘 활용 */ // 승패결과 n * n테이블 만들기 vector table(n, vector(n, UNKNOWN)); f.. 2020. 6. 22.