GitHub ID : soohyun-dev
윤수현의 개발 공간
GitHub ID : soohyun-dev
전체 방문자
오늘
어제
  • 분류 전체보기 (918)
    • 성장기록 (49)
      • 성장기록 (3)
      • 우아한테크코스 (16)
      • 프로젝트 (15)
      • TIL (14)
      • 테오의 스프린트 (1)
    • 프로그래밍언어 (88)
      • C언어 (14)
      • HTML\CSS (12)
      • JavaScript (7)
      • React (23)
      • Python (11)
      • JAVA (14)
      • TypeScript (6)
    • 알고리즘 공부 (736)
      • 코드업 - 파이썬 (108)
      • 백준 - 파이썬 (468)
      • 백준 - 자바스크립트 (125)
      • 프로그래머스 - 파이썬 (1)
      • 프로그래머스 - 자바스크립트 (34)
    • 책 리뷰 (9)
      • 프로그래밍 (3)
      • 독서 (6)
    • 전자기기 (1)
    • 일상, 일기 (18)
    • 기술 세미나 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 독해
  • 프로그래밍언어
  • javascript
  • 영어
  • 백준
  • 코딩
  • PYTHON
  • 프로그래머스자바스크립트
  • 코딩테스트
  • 자바스크립트
  • 프로그래머스풀이
  • 백준풀이
  • 영어독해
  • 백준파이썬
  • 프로그래머스
  • 프론트엔드
  • 코드업파이썬
  • 파이썬
  • 코테
  • 코드업

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GitHub ID : soohyun-dev

윤수현의 개발 공간

백준/ Silver3 문제 , 백준 파이썬 11727 , 2xn 타일링 2 , dp
알고리즘 공부/백준 - 파이썬

백준/ Silver3 문제 , 백준 파이썬 11727 , 2xn 타일링 2 , dp

2021. 12. 16. 10:45

백준/ Silver3 문제 , 백준 파이썬 11727 , 2xn 타일링 2

 

 

Check Point !   ( 해당사항 ✓체크 )

1. 막힘 없이 수월하게 풀린 문제인가?

2. 1시간이내로 풀렸던 문제인가?

3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?

4. 시간을 써도 도무지 풀 수 없는 문제인가?

5. 솔루션을 찾아봤는가?

-------------------------------------------------------------------------------------------

난이도 체감
1. 최상
2. 상
3. 중
4. 하


<이해도>
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함


<덧붙일 말>

뭔가 이해가 되는 듯하면서 내가 생각한 방식대로 안되니까 헷갈리는게 있었던 문제이다.
예를 들면 dp(4) 의 경우 점화식으로는 이해가 되지만 나는 1,2 를 나열하는 식으로 접근하려고 해서
도대체 이걸 어떻게 일반화해야할까 고민했다

 

 

<문제 출처>

 

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

 

11727번: 2×n 타일링 2

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

www.acmicpc.net

 

------------------------------------------------------------------------------------------------------------------------------

 

이 문제를 통해서 dp를 익혀 나갈 수 있다.

 

n=1 일 때 dp(1) =1

 

n=2 일 때 , dp(2) = 3

 

n=3 일 때, dp(3) = 5

 

n=4 일 때, dp(4) = 11

 

여기서 얻을 수 있는 점화식은

 

dp(n) = dp(n-1) + dp(n-2) 이다.

 

이 점화식을 적용하면 바로 풀린다.

 

 

 

 

이렇게 dp 로 접근하기전에 나는 1,2 를 나열 하는 식으로 문제를 풀려고 했었는데,

 

그냥 어떤식이 였는지만 알아보자. 굳이 쉽고 빠른 dp를 버리고 이걸 택할 이유도 없다.

 

 

자 n=1 의 경우 경우의 수는 한가지이다. 1x2 막대기 이거 하나밖에 못들어온다.

 

n=2 부터는 2x2 ,2x1 막대기 들이 들어오는데

 

1x2 막대기가 들어오는걸 제외하고 연속되는 2 x 2 에 들어올 수 있는 경우의 수는 2가지뿐이다.

 

 

즉, 1행에서만 봤을때 결국 경우의 수는 1칸 이냐 2칸이냐 차이다.

 

2칸이 차지하고있다면 x 2 만 해주면된다.

 


n=2 를 예를 들어보면

 

1행을 기준으로 들어올수있는건 

 

   
 

 

이렇게 두가지 이다.

 

거기서 두칸을 차지 하고있는 것에는 x 2를 해주는 것이다.

 

그러면 1+ 1x2 = 3 이라는 경우의 수가 나온다.

 

 

n=3 을 봐보자.

 

n=3 일때 1행에 들어올 수 있는 경우의 수는

 

1 + 1 + 1    => 1가지

 

1+ 2   => 1x2 => 2가지  (2의 갯수만큼 2를 곱해주면 된다)

 

2 + 1  => 1x2  => 2가지 

 

총 5가지가 나온다.

 

 

 

n=4 일때

 

1+1+1+1 => 1가지

 

1+1+2

1+2+1

2+1+1    => 2+2+2 => 총 6가지

 

2+2   => 2 x 2 => 4가지 (2가 두번나왔으므로 2번 곱해준다)

 

총 11 가지가 나온다.

 

 

결국 점화식 말고도

 

1과 2의 합으로 숫자를 나열하여 2의 갯수에 맞게 2를 곱해주는 식으로 계산을 해도 정답은 나온다. 

 

 

 

 

 

 

 

------------------------------------------------------------------------------------------------------------------------------

 

정답

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'알고리즘 공부 > 백준 - 파이썬' 카테고리의 다른 글

백준/ class3 문제 , 백준 파이썬 17219 , 비밀번호 찾기  (0) 2021.12.16
백준/ Silver3 문제 , 백준 파이썬 11726 , 2×n 타일링  (0) 2021.12.16
백준/ class3 문제 , 백준 파이썬 11399 , ATM  (0) 2021.12.16
백준/ Silver5 문제 , 백준 파이썬 1343 , 폴리오미노  (0) 2021.12.16
백준/ Silver1 문제 , 백준 파이썬 11660 , 구간 합  (0) 2021.12.15
    '알고리즘 공부/백준 - 파이썬' 카테고리의 다른 글
    • 백준/ class3 문제 , 백준 파이썬 17219 , 비밀번호 찾기
    • 백준/ Silver3 문제 , 백준 파이썬 11726 , 2×n 타일링
    • 백준/ class3 문제 , 백준 파이썬 11399 , ATM
    • 백준/ Silver5 문제 , 백준 파이썬 1343 , 폴리오미노
    GitHub ID : soohyun-dev
    GitHub ID : soohyun-dev
    환영합니다!😊 이곳은 저의 개발에 관한 내용들을 정리하는 공간입니다. 알고리즘 풀이에도 관심이 많아요. 좋은 하루 되세요~! github : soohyun_dev

    티스토리툴바