본문 바로가기

전체 글94

[🥈3]백준알고리즘 11727번 : 2xn 타일링 2 문제바로가기 1. 문제: 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. 2. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 3. 출력: 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 4. 풀이: import sys n = int(input()) dp = [0] * (n+1) dp[1] = 1; dp[2] = 3; for i in range(3,n+1): dp[i] = (dp[i-1] + (2*dp[i-2]))%10007 print(dp[-1]) dp[i-1] 은 마지막이 2*2 인 경우로 끝난 경우이고 dp[i-2]는 1*2, 2*1 로.. 2023. 11. 20.
[🥈3]백준알고리즘 9461번 : 파도반 수열 문제바로가기 1. 문제: 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다. 파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다. N이 주어졌을 때, P(N)을 구하는 프로그램을 작성하시오. 2. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, N이 주어진다. (1 ≤ N ≤ 100) 3. 출력: 각 테스트 케이스마다 P(N)을 출력한다. 4. 풀.. 2023. 11. 19.
[🥈2]백준알고리즘 1912번 : 연속 합 문제바로가기 1. 문제: n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다. 2. 입력 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. 3. 출력: 첫째 줄에 답을 출력한다. 4. 풀이: import sys n = int(input()) lst = list(map(int,input(.. 2023. 11. 18.
[🥈2]백준알고리즘 11053번 : 가장 긴 증가하는 부분수열 문제바로가기 1. 문제: 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 2. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 3. 출력: 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 4. 풀이: n = int(input()) lst = list(map(int,input().split())) dp = [1 for _ in range(n)] for i.. 2023. 11. 17.