BOJ 1629 : 곱셈
알고리즘 문제 전체 링크 www.acmicpc.net/problem/1629 A를 B번 곱할 때, B가 최대 2,147,483,647이므로, 2,147,483,647번 곱하면 연산 비용이 너무 많이 든다. 즉, O(B)의 비용이 든다. 하지만 분할 정복을 이용하면, O(logB)로 해결 가능하다. 만약 A를 100번 곱해야 한다고 생각해보자. A100 = A50 * A50 A50 = A25 * A25 A25 = A12 * A13 A12 = A6 * A6 A13 = A6 * A7 A6 = A3 * A3 A7 = A3 * A4 A3 = A * A2 A4 = A2 * A2 A2 = A * A 따라서, 재귀 함수를 이용해 답을 (log100)번만에 찾을 수 있다. typedef unsigned long long..
2021. 3. 24.
BOJ 7569 : 토마토 (3차원)
SW 역량테스트 합격하기 A형 강의 오픈!! (인프런 바로가기) 알고리즘 문제 전체 링크 www.acmicpc.net/problem/7569 BOJ 7576 토마토는 2차원에서 토마토가 퍼져나갔다.이번 문제는 3차원에서 토마토를 만들어가면 된다. 2차원에서는 4방향으로 토마토를 큐에 담았지만,3차원에서는 좌표의 높이(h)에 대해 위, 아래 토마토를 추가해주면 된다.즉, 총 6방향으로 BFS가 퍼져 나간다./* 순서대로 왼쪽, 위, 오른쪽, 아래 */int dr[] = { 0, -1, 0, 1 };int dc[] = { -1, 0, 1, 0 };void BFS(){ for (int h = 1; h rp) { QUEUE out = queue[rp++]; for (int i = 0; i 그리고 inp..
2021. 3. 17.