[백준/Python] 11729번 2×n 타일링

2025. 3. 5. 11:35·알고리즘문제풀이

문제

https://www.acmicpc.net/problem/11726


문제 이해

1x2 블럭을 채워넣는 경우의 수를 세는 문제이다.

n이 1인 경우부터 차례대로 세어나가고 있었다. n이 5인 경우를 구하고 있을 때 나는 눈치를 챘다.

이 문제는 피보나치 문제이구나!!

n	ans
1	1
2	2
3	3
4	5
5	8
6	13
7	21
8	34
9	55

문제 풀이(시간초과 : 피보나치 함수)

# 시간초과 : 재귀
n = int(input())

def fibo(x):
    if x == 1 or x == 2:
        return x
    else:
        return fibo(x-1) + fibo(x-2)

print(fibo(n))

 

나는 피보나치 문제니까 피보나치 함수를 만들어서 풀면 되겠지? 라고 생각하고 풀었지만 시간초과가 되었다.

백준 실버 문제에서는 웬만하면 시간초과 문제가 나타나는 것 같다.

그래도 알고리즘을 하나씩 알아가고 있다!!


문제풀이(정답 : 다이나믹 프로그래밍(DP))

n = int(input())
dp = [0] * (n+1)

for i in range(n+1):
    if i == 1:
        dp[1] = 1
    elif i == 2:
        dp[2] = 2
    else:
        dp[i] = dp[i-1] + dp[i-2]

print(dp[-1] % 10007)

 

시간초과 이슈로 다이나믹 프로그래밍을 사용했다.

나름 DP알고리즘은 익숙해져서 쉽게 풀 수 있었다.

 

+ 마지막 출력 조건 확인하자!!
이번 문제에서는 10007로 나눈 나머지 값을 출력하는 건데 그걸 안해서 틀렸다가 문제를 다시 읽고 깨달았다.

저작자표시 비영리 변경금지 (새창열림)

'알고리즘문제풀이' 카테고리의 다른 글

[백준/Python] 9095번 1, 2, 3 더하기  (0) 2025.03.10
[백준/Python] 2108번 통계학  (0) 2025.03.06
[백준/Python] 28278번 스택 2  (0) 2025.03.04
[백준/Python] 11652번 카드  (0) 2025.02.28
[백준/Python] 7785번 회사에 있는 사람  (0) 2025.02.27
'알고리즘문제풀이' 카테고리의 다른 글
  • [백준/Python] 9095번 1, 2, 3 더하기
  • [백준/Python] 2108번 통계학
  • [백준/Python] 28278번 스택 2
  • [백준/Python] 11652번 카드
jungyn
jungyn
jungyn 님의 블로그 입니다.
  • jungyn
    jungyn 님의 블로그
    jungyn
  • 전체
    오늘
    어제
    • 분류 전체보기 (36)
      • 알고리즘문제풀이 (31)
      • 제로인턴 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    후기
    2563
    1629
    18110
    교점개수
    solved.ac
    수들의 합 2
    2차원행렬
    스택 2
    너비우선탐색
    2108
    통계헉
    사전직무교육
    카드1
    제로인턴
    11729
    1847
    2161
    DP
    스택
    프로그래머스
    스택 수열
    다이나믹프로그래밍
    28278
    BFS
    백준
    counter
    시간초과
    SYS
    2606
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
jungyn
[백준/Python] 11729번 2×n 타일링
상단으로

티스토리툴바