본문 바로가기
728x90

알고리즘/[python] 백준 BOJ328

[Python] 백준 2225 합분해 https://www.acmicpc.net/problem/2225 2225번: 합분해 첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 문제 해결 - 숫자 n을 k개의 숫자로 나타내는 개수를 어떻게 구할 것인가? - 숫자에 0을 포함한다는 것은 것을 주의하자. - 잘 모르겠으면 숫자 1 부터 귀납적으로 한 번 해보자! - 1을 1개 숫자로 1 = 1 (1개), 1을 2개 숫자로 1= 1 + 0 = 0 + 1 (2개) 1 = 1 + 0 + 0 = 0 + 1 + 0 = 0 + 0 + 1 (3개)... - 2=2 (1개) 2= 2+0 = 1+1 = 0 +2 (3개) ... 표로 정리를 하면 k \ n n = 1 n=2 n=3 k = 1 (모든 값이1) 1 1 1.. 2022. 12. 24.
[Python] 백준 2193 이친수 https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 문제 해결 - 다이나믹 프로그래밍(dp)인 것은 쉽게 눈치 챌 수 있다. - n자리 이친수 개수를 dp[n]으로 놓을 때 dp[n] = dp[n-1] + dp[n-2]임을 알아야 한다. 그림판으로 그리면 dp[n]=dp[n-1] + dp[n-2]임을 알 수 있다. CODE import sys input= sys.stdin.readline n = int(input()) dp = [0 fo.. 2022. 12. 22.
[Python] 백준 25682 체스판 다시 칠하기 2 https://www.acmicpc.net/problem/25682 25682번: 체스판 다시 칠하기 2 첫째 줄에 정수 N, M, K가 주어진다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 문제 해결 1018번과 같은 유형이지만 시간초과 압박이 있다. https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 하지만 별 생각이 안나서 비슷하게 풀어 봤다. CODE i.. 2022. 12. 22.
[Python] 백준 11726 2Xn 타일링 https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 문제해결 - 세로 길이는 2로 고정이라는 것에 주목하자. 그러면 가로길이가 1인 1번으로 한개 놓던가 가로길이가 2인 2번으로 2개 놓는 방법이 있다. 이를 보면 피보나치 수열 fib(n) = fib(n-1) + fib(n-2) 가 생각이 난다. CODE import sys input = sys.stdin.readline def fib(n): if n==1: return 1 elif n==2: return 2 retu.. 2022. 12. 22.
728x90