HANDA개발
HANDA개발공부
HANDA개발
전체 방문자
오늘
어제
  • HANDA_list
    • 취업일지
    • 일상
    • TIL
    • Linux
    • RabbitMQ
    • Spring
      • Security
      • Batch
      • Project
    • ERROR
    • DB
      • Oracle
      • PostgreSQL
    • JUnit
    • JAVA
    • AWS
    • OAuth2.0
    • Redis
    • API
    • Jenkins
    • Nigix
    • CS
    • 코테준비
      • 자료구조
      • 알고리즘
    • 학교수업
    • 디자인패턴

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • batch
  • Parameter
  • 스프링배치
  • java실행과정
  • 애플코딩
  • cmd
  • Spring
  • valid어노테이션
  • mybatis
  • 데이터베이스
  • oracle
  • gson
  • 공부준비
  • JVM
  • @Valid
  • JAVA명령어
  • 명령어
  • 다른파라미터
  • 상태관리
  • 프로그래머스
  • error
  • 어노테이션
  • EAI
  • 프로시져호출
  • Job
  • SpringBatch
  • 역직렬화
  • MQ
  • 재실행
  • garbaage

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HANDA개발

HANDA개발공부

dp
코테준비/알고리즘

dp

2022. 11. 11. 23:09

DP

  • Dynamic Programing
  • 이전의 값을 재활용하는 알고리즘
  • 예시 : 1~10 숫자 중, 각각 이전 값들을 합한 값 구하기
  • 이전의 값을 활용해서 시간복잡도 줄일 수 있음.
  • 이전값 을 어떻게 구해야하는지에 대한 점화식이 필요.
  • dp: 이전값 , 점화식: An = A(n-1) + A(n-2)
  • 점화식 먼저 짜고 코드짜기, 어떻게 할지 모르겠을 땐, 하나씩 그려보면서 규칙찾기.

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

 

11726번: 2×n 타일링

2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.

www.acmicpc.net

 

 

출력

- 첫째 줄에 2 x n 크기의 직사각형을 1x2, 2x1 타일로 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.

 

* 점화식만들기

n = 1 => 1

n = 2 => 2

n = 3 => 3 = 1+2

=> A(n) = A(n-1) + A(n-2)

 

*점화식을 이용해 DP 알고리즘 짜기

 

"""
* 아이디어
- A1:1, A2:2, A3:1+2
- 점화식 : An = A(n-1) + A(n-2)
- N값을 구하기위해 for문으로 3부터 N까지 돌면서 (n이 2일경우 A(n-2)는 0인데 해당값은 없기때문)
- 이전값과 그 이전 값을 더해서 저장(이때 10007로 나눈 나머지값)
  

* 시간복잡도
- for : N > O(N)

* 자료구조
- DP 저장하는 경우의 수 배열(An) : int[]
- 최대값 : 10006 > Int 가능
"""

import sys
input = sys.stdin.readline

n = int(input())
# 아무것도 없을때 0, 1칸일때 1, 2칸 2
rs = [0,1,2] 

for i in range(3, n+1):
	rs.append((rs[i-1] + rs[i-2])%10007)
    
print(rs[n])

 

 

출처_

https://www.youtube.com/watch?v=qLkFBk5-HrY&list=PLi-xJrVzQaxXC2Aausv_6mlOZZ2g2J6YB&index=9 

 

 

'코테준비 > 알고리즘' 카테고리의 다른 글

4. 시뮬레이션  (0) 2022.11.11
[Hash문제] 완주하지 못한 선수  (0) 2022.06.15
코테 주요 출제문제  (0) 2022.05.14
    '코테준비/알고리즘' 카테고리의 다른 글
    • 4. 시뮬레이션
    • [Hash문제] 완주하지 못한 선수
    • 코테 주요 출제문제
    HANDA개발
    HANDA개발

    티스토리툴바