반응형
PS/백준 알고리즘[BOJ]2023. 10. 30. 20:21[백준 1182번] 부분수열의 합 (C++)

https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net #include using namespace std; int seq[20]; int N, S, ans; void func(int cur, int cnt, int sum) { if (cur == N) { if (sum == S && cnt != 0) ans++; return; } //다음 원소를 포함한 경우와 포함하지 않은 경우로 나누기 func(cur + 1, ..

[백준 2448번] 별 찍기 - 11 (C++)
PS/백준 알고리즘[BOJ]2023. 10. 29. 21:46[백준 2448번] 별 찍기 - 11 (C++)

https://www.acmicpc.net/problem/2448 2448번: 별 찍기 - 11 첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수) www.acmicpc.net 재귀가 3번 반복되므로 시간복잡도가 O(n의 log2 3승)이다. 잘못하면 시간초과가 날 수 있으므로 연산량을 최대한 줄이는 것이 좋다. #include using namespace std; int map[6143][3702]; void fractal(int size, int x, int y) { if (size == 1) return; if (size == 3) { for (int i = 0; i < 3; i++) { for (int j = 0; ..

[백준 2447번] 별 찍기 -10 (C++)
PS/백준 알고리즘[BOJ]2023. 10. 29. 00:52[백준 2447번] 별 찍기 -10 (C++)

#define SIZE 2187 #include using namespace std; int map[SIZE][SIZE]; void fractal(int size, int x, int y) { if (size == 1) return; if (size == 3) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (i != 1 || j != 1) map[x + j][y + i] = 1; } } } size /= 3; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (i == 1 && j == 1) continue; else fractal(size, x + size * j, y +..

[백준 14601] 샤워실 바닥 깔기 (Large)
PS/백준 알고리즘[BOJ]2023. 10. 27. 10:58[백준 14601] 샤워실 바닥 깔기 (Large)

1. 문제 https://www.acmicpc.net/problem/14601 14601번: 샤워실 바닥 깔기 (Large) 첫 번째 줄에는 바닥의 한 변의 길이를 표현하는 자연수 K(1 ≤ K ≤ 7) 가 주어진다. 이때 바닥의 크기는 2K 가 됨에 유의하라. 두 번째 줄에는 배수구의 위치를 나타내는 자연수 x, y (1 ≤ x, y ≤ 2K) www.acmicpc.net #include using namespace std; int num; int map[128][128]; bool check(int x1, int y1, int x2, int y2) { for (int i = x1; i < x2; i++) { for (int j = y1; j < y2; j++) { if (map[i - 1][j - 1..

[백준 14600번] 샤워실 바닥 갈기 (Small) (C++)
PS/백준 알고리즘[BOJ]2023. 10. 26. 11:20[백준 14600번] 샤워실 바닥 갈기 (Small) (C++)

#include using namespace std; int num; int map[4][4]; bool check(int x1, int y1, int x2, int y2) { for (int i = x1; i > m >> n; map[m-1][n-1] = -1; int siz = (1 = 0; i--, cout

[백준 9920번] image (C++)
PS/백준 알고리즘[BOJ]2023. 10. 21. 22:07[백준 9920번] image (C++)

//white: 0, black: 1 #define SIZE 64 #include using namespace std; int dat; int cnt; int map[SIZE][SIZE]; // change - true, not change - false bool check(int x1, int y1, int x2, int y2) { dat = map[x1][y1]; for (int i = x1; i < x2; i++) { for (int j = y1; j < y2; j++) { if (dat != map[i][j]) return true; } } return false; } int dc(int size, int x, int y) { if (size == 1) return 2; if (!check(x, ..

[백준 1992번] 쿼드트리 (C++)
PS/백준 알고리즘[BOJ]2023. 10. 21. 15:49[백준 1992번] 쿼드트리 (C++)

//white: 0, black: 1 #define SIZE 64 #include #include #include using namespace std; char col; char map[SIZE][SIZE]; // change - true, not change - false bool check(int x1, int y1, int x2, int y2) { col = map[x1][y1]; for (int i = x1; i < x2; i++) { for (int j = y1; j < y2; j++) { if (col != map[i][j]) return true; } } return false; } void dc(int size, int x, int y) { if (size == 1) { cout str; ..

재귀 함수와 반복문의 비교(recursion function)
자료구조 | 알고리즘/분할 정복(Devide Conquer)2023. 10. 17. 13:00재귀 함수와 반복문의 비교(recursion function)

1. 재귀 함수란? 한자로 풀어서 해석하면 다시 "재(再)" 돌아올 "귀(歸)", 말 그대로 다시 돌아오다 라는 뜻이다. 프로그래밍의 관점에서 재귀란 "함수 자신을 다시 호출하다"라는 의미이다. 2. 재귀함수의 쓰임 재귀함수는 기본적으로 현재의 condition을 유지한 상태로 전의 작업과 비슷한 행동을 할 때 매우 유용한 알고리즘이다. 이러한 재귀함수의 특성때문에 stack, 분할정복 등의 많은 문제에서 활용되곤 한다. 다음은 재귀함수로 간단하게 구현할 수 있는 문제이다. https://wondrous-developer.tistory.com/1 [백준 17609] 회문 (C++) 처음 고민했던 사고과정과 이후 정답풀이를 같이 정리해 놓았다. 1. 문제 https://www.acmicpc.net/prob..

728x90
반응형
image