본문 바로가기
반응형

백준알고리즘/분할정복7

(Python/🥇2)백준알고리즘 11444 번 : 피보나치 수 6 문제 바로가기  문제:피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.입력:첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다. 출력:첫째 줄에 n번째 피보나치 수를 1,000,000,007으로 나눈 나머지를 출력한다. 풀이.. 2024. 8. 1.
(Python/🥇1)백준알고리즘 11401번: 이항계수 (합동식, 모듈러 연산, 페르마의 소정리) 문제 바로가기 문제:입력:첫째 줄에 𝑁(N)과 𝐾(K)가 주어진다. (1 ≤ 𝑁(N) ≤ 4,000,000,0 ≤ 𝐾(K) ≤ 𝑁(N)) 출력: (𝑁/𝐾) 를 1,000,000,007로 나눈 나머지를 출력한다. 풀이: 실패 1 런타임 에러: sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r')sys.setrecursionlimit(10**6)def fibo(n, k): if k == 0 or n == k: return 1 return fibo(n-1, k) + fibo(n-1, k-1)n, k = map(int,sys.stdin.readline().split(" "))print(fibo(n,k))  이 문제.. 2024. 7. 29.
(Python/🥇4)백준알고리즘 10830번: 행렬 제곱 문제 바로가기 문제: 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. 입력: 첫째 줄에 행렬의 크기 N과 B가 주어진다. (2 ≤ N ≤ 5, 1 ≤ B ≤ 100,000,000,000) 둘째 줄부터 N개의 줄에 행렬의 각 원소가 주어진다. 행렬의 각 원소는 1,000보다 작거나 같은 자연수 또는 0이다. 출력: 첫째 줄부터 N개의 줄에 걸쳐 행렬 A를 B제곱한 결과를 출력한다. 풀이: 이 전 문제에서 사용한 행렬의 곱을 구하는 방식과, 1629번 곱셈 두개를 사용하는 문제이다. 옛날에 풀었어서 그냥 처음 푸는것 같고 재귀 쓰는거 너무 어렵다. 재귀적으로 생각하는 습관을 가져야.. 2023. 6. 16.
(Python/🥈2)백준 알고리즘 1780번: 종이의 개수 문제 바로가기 문제: N*M크기의 행렬 A와 M*K크기의 행렬 B가 주어졌을 때, 두 행렬을 곱하는 프로그램을 작성하시오. 입력: 첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개가 차례대로 주어진다. N과 M, 그리고 K는 100보다 작거나 같고, 행렬의 원소는 절댓값이 100보다 작거나 같은 정수이다. 출력: 첫째 줄부터 N개의 줄에 행렬 A와 B를 곱한 행렬을 출력한다. 행렬의 각 원소는 공백으로 구분한다. import sys sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r'.. 2023. 6. 16.
(Python/🥈2)백준 알고리즘 1780번: 종이의 개수 문제 바로가기 문제: N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 1.만약 종이가 모두 같은 수로 되어 있다면 이 종이를 그대로 사용한다. 2.(1)이 아닌 경우에는 종이를 같은 크기의 종이 9개로 자르고, 각각의 잘린 종이에 대해서 (1)의 과정을 반복한다. 이와 같이 종이를 잘랐을 때, -1로만 채워진 종이의 개수, 0으로만 채워진 종이의 개수, 1로만 채워진 종이의 개수를 구해내는 프로그램을 작성하시오. 입력: 첫째 줄에 N(1 ≤ N ≤ 37, N은 3k 꼴)이 주어진다. 다음 N개의 줄에는 N개의 정수로 행렬이 주어진다. 출력: 첫째 줄에 -1로만 채워진 종이의 개.. 2023. 6. 16.
(Python/🥈1)백준알고리즘 1992번: 쿼드트리 문제 바로가기 문제: 흑백 영상을 압축하여 표현하는 데이터 구조로 쿼드 트리(Quad Tree)라는 방법이 있다. 흰 점을 나타내는 0과 검은 점을 나타내는 1로만 이루어진 영상(2차원 배열)에서 같은 숫자의 점들이 한 곳에 많이 몰려있으면, 쿼드 트리에서는 이를 압축하여 간단히 표현할 수 있다. 주어진 영상이 모두 0으로만 되어 있으면 압축 결과는 "0"이 되고, 모두 1로만 되어 있으면 압축 결과는 "1"이 된다. 만약 0과 1이 섞여 있으면 전체를 한 번에 나타내지를 못하고, 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래, 이렇게 4개의 영상으로 나누어 압축하게 되며, 이 4개의 영역을 압축한 결과를 차례대로 괄호 안에 묶어서 표현한다 위 그림에서 왼쪽의 영상은 오른쪽의 배열과 같이 숫자로 주어지.. 2023. 6. 15.
반응형