티스토리 뷰
문제 링크
https://algospot.com/judge/problem/read/POLY
algospot.com :: POLY
폴리오미노 문제 정보 문제 정사각형들의 변들을 서로 완전하게 붙여 만든 도형들을 폴리오미노(Polyomino)라고 부릅니다. n개의 정사각형으로 구성된 폴리오미노들을 만들려고하는데, 이 중 세로
algospot.com
세로로 단조인 폴리오미노는 각 행의 사각형들이 모두 연속해서 붙어있어야 합니다.
같은 행에서 사각형들 사이에 공간이 있으면 안된다는 것을 의미합니다.
이 형태의 폴리오미노를 구하기 위해서는
첫 번째 행부터 내려가면서 각 행에서 사각형을 놓을 수 있는 모든 방법을 세어주면 됩니다.
n이 3일 때 첫 번째 행에 올 수있는 사각형은 1, 2, 3개로 총 3가지 경우가 올 수 있습니다.
첫 번째 행의 사각형 개수를 정하면 두 번째 행으로 내려가서 1개부터 남은 사각형 만큼을 놓고 다시 아래 행을 내려가는 방식으로 마지막 행까지 모두 구해야 합니다.
사각형을 놓는 방법은 윗 행의 사각형 개수에 영향을 받습니다.
첫 번째행의 사각형 개수가 a개가 놓여있고 두 번째 행에 사각형을 b개 놓을 때 a + b - 1 가지 방법만큼 올 수 있습니다.
따라서 다음 행으로 내려갔을 때의 모든 방법의 수에 현재 행에서 사각형을 놓는 방법의 수 만큼을 곱해줘야 합니다.
그리고 이를 사각형 1개를 놓았을 때 부터 남는 사각형만큼을 놓았을 때의 모든 방법을 더해주면 답을 구할 수 있습니다.
구현 코드
'Coding Test > 알고스팟' 카테고리의 다른 글
[C++] 알고스팟/탐욕법 - 출전 순서 정하기 (0) | 2020.08.27 |
---|---|
[C++] 알고스팟/동적계획법 - 두니발 박사의 탈옥 (0) | 2020.08.26 |
[C++] 알고스팟/동적계획법 - 달팽이 (0) | 2020.08.24 |
[C++] 알고스팟/동적계획법 - 삼각형 위의 최대 경로 수 세기 (0) | 2020.08.23 |
[C++] 알고스팟/동적계획법 - 타일링 (0) | 2020.08.22 |
- Total
- Today
- Yesterday
- 완전탐색
- pyspark
- 합친 lis
- 하이브
- import
- 스파크
- C++
- 2225
- Hadoop
- 배열과 문자열
- 분할정복
- 코딩인터뷰 완전분석
- hive
- 출전 순서 정하기
- 하둡
- Jaeha's Safe
- 두니발 박사의 탈옥
- HDFS
- HiveQL
- Django
- 팰린드롬 구하기
- 알고스팟
- python
- microwaving lunch boxes
- 외발 뛰기
- Sqoop
- 삼각형 위의 최대 경로 수 세기
- 백준
- 삼각형 위의 최대 경로
- 종만북
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |