-문제: https://www.acmicpc.net/problem/2133

 

2133번: 타일 채우기

3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자.

www.acmicpc.net

  • 점화식을 구하기가 어려웠던 문제. 
  • 일단 n이 홀수인 경우에 모두 답이 0이라 짝수를 중심으로 진행해야한다.
  • 점화식: P(n)= 3*p(n-2)+2*p(n-4)+,,,,+2*p(0)

 

 

-정답풀이: 

 

-풀이 이해하는데 시간이 좀 걸렸다

 

점화식에서 i-1이 아닌 i-4이다 

 

-문제: https://www.acmicpc.net/problem/11051

 

11051번: 이항 계수 2

첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\))

www.acmicpc.net

콤비네이션만 알면 풀 수 있었던 문제

 

-정답풀이: 

  • 4번에서 나눌때 '/'가 아닌 '//'로 해야한다
  • 마지막에 답 출력할 때 10007로 나누기!!(매번 빼먹고 틀린다)
import math
n,k=map(int,input().split())

answer=math.factorial(n)//(math.factorial(k)*math.factorial(n-k))
print(answer%10007)

-문제: https://www.acmicpc.net/problem/11722

 

11722번: 가장 긴 감소하는 부분 수열

수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} 

www.acmicpc.net

이전에 풀었던 문제와 같은 패턴의 문제

 

-정답풀이:

-문제: https://www.acmicpc.net/problem/11055

 

11055번: 가장 큰 증가 부분 수열

수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수

www.acmicpc.net

가장 긴 수열 갯수 구하는 문제와 같은패턴이라 쉽게 풀었던 문제. 스스로 풀었던 문제

 

-정답풀이: 

n=int(input())
dp=list(map(int,input().split()))
m=[0]*n
m[0]=dp[0]

for i in range(1,n):
    for j in range(i):
        if dp[i]>dp[j] and m[i]<m[j]:
            m[i]=m[j]
    m[i]+=dp[i]
    
print(max(m))
  • 8번라인에 m[i]<m[j]과 9번라인 때문에 여러번 틀렸음.
  • 값은 크더라도 그때까지 합이 j가 더 크면 원하는 답을 못함 따라서 m[i]< m[j] 만족하는지 확인해야함
  • 9번은 이전 값을 누적해야하므로 필요한 과정 
  • 10번은 조건만족하는 수를 더해야하므로 있어야하는 라인이다

-틀린풀이: 

+ Recent posts