소토
소토의 기록하는 삶
소토
전체 방문자
오늘
어제
  • 분류 전체보기 (34)
    • Algorithm (34)
      • Problem (34)
    • Web (0)
    • ML & AI (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 패스트캠퍼스
  • 직장인자기계발
  • 코드스테이츠
  • 백준
  • 한번에끝내는JavaSpring웹개발마스터초격차패키지Online
  • 문제
  • 알고리즘
  • 직장인인강
  • 패캠챌린지
  • 패스트캠퍼스후기

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
소토

소토의 기록하는 삶

Algorithm/Problem

[Baekjoon] 9461번 : 파도반 수열

2022. 1. 19. 23:12

실버 3

 

9461번: 파도반 수열

오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의

www.acmicpc.net

 

문제 풀이

파도반 수열의 규칙을 찾아보면 다음과 같다. 

n = 1 -> 1
n = 2 -> 1
n = 3 -> 1
n = 4 -> 2
n = 5 -> 2
n = 6 -> 3 (f(1)+f(5))
n = 7 -> 4 (f(2)+f(6))
n = 8 -> 5 (f(3)+f(7))
n = 9 -> 7 (f(4)+f(8))
n = 10 -> 9 (f(5)+f(9))

5까지는 규칙이 없지만 6부터 규칙이 나타난다.

즉 n이 5보다 클때 다음 점화식을 만족한다. 

dp[i] =dp[i-5] + dp[i-1]

 

코드

t = int(input())
fix_value = [0, 1, 1, 1, 2, 2]

for _ in range(t):
    n = int(input())
    p = [0] * (n + 1)

    if n > 5:
        p[0:6] = fix_value
        for i in range(6, n+1):
            p[i] = p[i-5] + p[i-1]
    else:
        for i in range(1, n+1):
            p[i] = fix_value[i]

    print(p[n])

 

728x90
저작자표시 (새창열림)

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

[Baekjoon] 2579번 : 계단 오르기  (0) 2022.01.20
[Baekjoon] 1149번 : RGB거리  (0) 2022.01.20
[Baekjoon] 1904번 : 01타일  (0) 2022.01.19
[Baekjoon] 1003번 : 피보나치 함수  (0) 2022.01.19
[Baekjoon] 14889번 - 스타트와 링크  (0) 2022.01.18
    소토
    소토

    티스토리툴바