전체 글
-
백준 2447번 별 찍기 - 10PS 2021. 4. 16. 17:53
www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 분할정복 #include #include #include using namespace std; #define MAX 2200 int n; char map[MAX][MAX]; void solve(int y, int x, int k) { if (k == 1) { int t = 0; for (int i = y; i < y + 3; i++) { for (int j = x; j < x + 3;..
-
백준 1030번 프렉탈 평면PS 2021. 4. 14. 19:08
www.acmicpc.net/problem/1030 시간별 평면을 다 만드는 것은 메모리 초과가 발생한다. 그리고 정답으로 출력할 최대 크기가 50x50이다. 평면을 만들어 갈 때, 출력범위에 포함되는 부분만 만든다. #include #include #include using namespace std; #define white 0 #define black 1 int S, N, K; int R1, R2, C1, C2; int map[100][100]; bool isBlack(int t) { if ((N - K) / 2 > S >> N >> K >> R1 >> R2 >> C1 >> C2; solve(0, 0, 0, 0); for (int i = 0; i < R2 - R1 + 1; i++) { for (int..
-
백준 1725번 히스토그램PS 2021. 4. 14. 19:04
www.acmicpc.net/problem/1725 정답이 나오는 범위를 (왼쪽, 가운데, 오른쪽)으로 나누어 생각한다. #include #include using namespace std; #define MAX 100000 int n; long long a[MAX]; long long solve(int left, int right) { if (left == right) return a[left]; int mid = (left + right) / 2; long long res = max(solve(left, mid), solve(mid+1, right)); int low = mid; int high = mid + 1; long long height = min(a[low], a[high]); res = m..
-
백준 2104번 부분배열 고르기PS 2021. 4. 14. 18:54
www.acmicpc.net/problem/2104 왼쪽 부분, 오른쪽 부분, 가운데 부분 중에서 최대값을 찾는다. #include #include using namespace std; #define MAX 100001 #define INF 987654321 int n; long long A[MAX]; long long solve(int left, int right) { if (left == right) return A[left] * A[left]; int mid = (left + right) / 2; long long res = max(solve(left, mid), solve(mid + 1, right)); int low = mid; int high = mid+1; long long m = min(A..
-
백준 5904번 Moo게임PS 2021. 4. 8. 21:25
www.acmicpc.net/problem/5904 어림수로 k의 최댓값은 30이하이다. 3개의 조각( s(k-1), 'moooo...', s(k-1)) 중 하나를 타고 들어간다. 3번째 조각을 타고 들어갈 때, n의 인덱스를 s(k-1)에 맞게 갱신해주어야 한다. #include #include #include using namespace std; long long n; long long Size[31]; char S(int k) { if(k == 0){ if (n == 0) return 'm'; else return 'o'; } if (n n; n--; retSize(30); cout
-
백준 10830번 행렬 제곱PS 2021. 4. 8. 02:17
www.acmicpc.net/problem/10830 분할 정복을 이용한 거듭제곱과 연산만 다르고 똑같습니다. #include #include #include #include using namespace std; typedef vector vec; long long N, B; vec map(6, vector(6, 0)); void print(vec v) { for (int i = 0; i B; for (int i = 0; i > map[i][j]; } } map = doMod(map); print(solve(B)); return 0; }
-
백준 20164 홀수 홀릭 호석PS 2021. 4. 8. 02:14
www.acmicpc.net/problem/20164 #include #include #include using namespace std; #define INF 987654321 int n; int big = -INF; int small = INF; int counting(string str) { int cnt = 0; for(int i = 0; i < str.size(); i++) { int num = str[i] - '0'; if (num % 2 == 1) { cnt++; } } return cnt; } string divideAndAdd(int p, int q, string str) { string a = ""; string b = ""; string c = ""; int A, B, C; for (..
-
백준 1780번 종이의 개수PS 2021. 4. 8. 02:09
www.acmicpc.net/problem/1780 #include #include #include using namespace std; #define MAX 2188 int n; int oneCnt, zeroCnt, moneCnt; int map[MAX][MAX]; void counting(int num) { if (num == -1) { moneCnt++; } else if (num == 0) { zeroCnt++; } else { oneCnt++; } } void solve(int y, int x, int size) { if (size == 1) { counting(map[y][x]); return; } bool br = false; for (int i = y; i < y + size; i++) {..