알고리즘

    [BOJ] 1030 프랙탈 평면

    문제 링크 www.acmicpc.net/problem/1030 모든 알고리즘 문제는 C++로 구현되어 있습니다. 이 문제는 재귀를 이용한 분할정복으로 해결할 수 있다. 주어진 n과 s를 이용하여 미리 전체 평면의 한 변의 길이를 구해두고, 이중 for문을 이용하여 행 [r1, r2], 열 [c1, c2] 범위의 점들을 하나씩 판정하여 출력해준다. int len = 1; while (s--) len *= n; for (i = r1; i = border * (n - k) / 2 && y > s >> n >> ..

    [BOJ] 1027 고층 건물

    문제 링크 www.acmicpc.net/problem/1027 모든 알고리즘 문제는 C++로 구현되어 있습니다. 고층 건물 A에서 왼쪽, 오른쪽으로 건물들을 보면서 기울기와 최대 높이를 측정하고, 이를 통해 이 건물에서 최대 몇 개의 다른 건물을 볼 수 있는지 구한다. 먼저 왼쪽으로 보면서 그리고 건물 B가 건물 A보다 높은지, 낮은지에 따라 처리를 해주고, 그 다음 오른쪽으로 보면서 건물 B가 건물 A보다 높은지, 낮은지에 따라 처리를 해준다. 기울기는 (A의 높이 - B의 높이) / (A 좌표 - B 좌표)로 구할 수 있다. 왼쪽으로 볼 때와 오른쪽으로 볼 때 각각 maxHeight에 지금까지 본 건물들 중 가장 높은 건물의 높이를 저장해둔다. 다음에 볼 건물의 높이가 maxHeight보다 낮고, m..

    [BOJ] 1117 색칠 1

    문제 링크 https://www.acmicpc.net/problem/1117 모든 알고리즘 문제는 C++로 구현되어 있습니다. 이 문제는 가로로 접는 선 f를 기준으로 왼쪽 종이와 오른쪽 종이의 크기에 따라 두 가지 경우로 나눠볼 수 있다. 두 경우에서 색칠되는 영역의 넓이를 구한 뒤, 이를 전체 영역 넓이에서 빼면 색칠되지 않은 영역의 넓이를 구할 수 있다. 1. 왼쪽 크기 w/2) 왼쪽 종이에 색칠되는 영역은 (x2-x1) * (y2-y1) * (c+1)로 구할 수 있다. 2-1. 색칠 범위에 오른쪽 종이가 포함되지 않는 경우 이 경우 x1 + f는 w보다 작거나 같아야 한다. 2-2. 색칠 범위에 오른쪽 종이가 포함되는 경우 이 경우 x1 + f는 w보다 작아야 한다. 이때 오른쪽 종이에 색칠되는 ..