[분할정복/DQ] 백준 11444 피보나치 수 6 - 파이썬(Python)
[ Contents ] 1. 문제 (링크 참조) 11444번: 피보나치 수 6 첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 2. 문제 풀이 n번째 피보나치 수를 구하는 문제입니다. 본래 피보나치 수열은 동적계획법 DP를 이용해서 효율적으로 구할 수 있지만, 이 문제에서는 최대 n이 1,000,000,000,000,000,000입니다. 아주 큰 수의 피보나치를 빠르게 구하기 위해서는 분할정복을 이용한 '행렬의 거듭제곱'을 사용해야 합니다. 피보나치 규칙을 행렬로 나타내면 아래와 같습니다. 2022.05.10 - [Algorithm] - [분할정복/DQ] 백준 10830 행렬 제곱 - 파이썬(Python) 결국 행렬의..
2022. 5. 14.
[분할정복/재귀] 백준 1629 곱셈 - 파이썬(Python)
[ Contents ] 1. 문제 (링크 참조) 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 2. 문제 풀이 효율적으로 거듭제곱을 구하는 문제입니다. 단순히 A**B를 하면 시간 초과가 납니다. 2022.01.29 - [Algorithm] - [Algorithm] 분할정복(DQ, Divide-and-Conquer), 각개격파 알고리즘 [Algorithm] 분할정복(DQ, Divide-and-Conquer), 각개격파 알고리즘 각개격파(各個擊破): 적을 하나하나 따로 떼어 무찌름 유독 외세의 침략을 많이 받았던 우리 민족의 대표적인 전술은 '매복'과 '각개격파'였습니다. ..
2022. 5. 8.
[분할정복/DQ] 백준 1074 Z - Python
[ Contents ] 1. 문제 (링크 참조) 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 2. 문제 풀이 위와 같이 Z 모양으로 이동하는 규칙이 있습니다. 이 때, 2^N * 2^N크기의 r행 c열의 순서를 구하는 문제입니다. 2022.01.29 - [Algorithm] - [Algorithm] 분할정복(DQ, Divide-and-Conquer), 각개격파 알고리즘 [Algorithm] 분할정복(DQ, Divide-and-Conquer), 각개격파 알고리즘 각개격파(各個擊破): 적을 하나하나 ..
2022. 2. 25.
[분할정복/DQ] 백준 2630 색종이 만들기 - Python
[ Contents ] 1. 문제 (링크 참조) 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 2. 문제 풀이 잘라진 하얀색 색종이와 파란색 색종이의 개수를 구하는 문제입니다. 정사각형의 색종이에 하얀색과 파란색이 섞여 있을 경우, 분리될 때까지 4분할을 합니다. 입력으로 주어지는 색종이의 크기는 2, 4, 8, 16, 32, 64, 128 중 하나입니다. 2022.01.29 - [Algorithm] - [Algorithm] 분할정복(DQ, Divide-and-Conquer), 각..
2022. 1. 29.