@Eeap
velog
@Eeap
전체 방문자
오늘
어제
  • 전체 (168)
    • osam (1)
    • Cloud (21)
      • Docker (2)
      • AWS (13)
    • AI & Data (7)
    • Algorithm (76)
      • Baekjoon (75)
      • Codeforces (1)
    • Language (18)
      • Java (18)
    • Back-end (17)
      • Spring (3)
      • JSP & Servlet (12)
      • Go (2)
    • 일상 (4)
    • 기타 (8)
    • git (1)
    • Infra (9)
      • Apache Kafka (5)
      • Kubernetes (4)
      • 기타 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 티스토리챌린지
  • CLASS
  • sagemaker unified studio
  • SageMaker
  • converse api
  • AWS CodeCatalyst
  • bedrock agent
  • AWS CodeArtifact
  • bedrock
  • java
  • Python
  • AWS CodeStar
  • flink
  • knowledge bases
  • 인터페이스
  • 오블완
  • invokemodel api
  • bedrock api
  • Agent
  • 심폴릭링크

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
@Eeap

velog

Algorithm/Baekjoon

2133번 파이썬

2022. 4. 6. 16:09
반응형

이 문제는 홀수 일때는 경우의 수가 존재하지 않아서 짝수일때만 확인해주면 된다.

처음에 2일때 경우의 수는 3개이고

4개일때부터는 p[2]*p[2] + 2이다  뒤에 두가지는 다음과 같은 모양이다

     
 
   

이 모양 하나와 반대 모양 총 두가지이다

즉 p[4] = p[2]*p[2] + 2 이다.

6일 경우부터는 경우가 (2,2,2) (4,2) (2,4) (6)인데

앞에 (2,2,2) (4,2) 이 둘은 p[4]*p[2]한 값과 같고 

(2,4)는 4의 모양중 전체 가로길이가 4인 두가지 모양의 경우만 계산해주면 된다.(나머지 경유는 앞에 4,2와 동일하기 때문)

즉 p[2]*2이다.

그리고 마지막으로 가로길이가 6인 경우만 계산해주면된다. 가로길이가 6인 경우는

     
       
   

와 반대 모양 총 두가지이다.

8도 마찬가지로 이렇게 반복되고 이걸 식으로 나타내면

p[n] = p[n-2]*p[2] + p[n-4]*2+p[n-6]*2+..p[0]*2로 나타낼 수 있다.

이걸 코드로 나타내면 다음과 같이 나타낼 수 있다.

import sys
input = sys.stdin.readline
n = int(input())
p=[0 for _ in range(n+1)]
p[0]=1
for num in range(2,n+1,2):
  p[num] = p[num-2]*3
  for idx in range(0,num-2,2):
    p[num]+=p[idx]*2

print(p[n])
반응형
저작자표시 (새창열림)

'Algorithm > Baekjoon' 카테고리의 다른 글

9465번 파이썬  (0) 2022.04.07
1920번 파이썬  (0) 2022.04.06
14501번 파이썬  (0) 2022.04.05
1699번 파이썬  (0) 2022.04.04
1912번 파이썬  (0) 2022.04.04
    'Algorithm/Baekjoon' 카테고리의 다른 글
    • 9465번 파이썬
    • 1920번 파이썬
    • 14501번 파이썬
    • 1699번 파이썬
    @Eeap
    @Eeap

    티스토리툴바