Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- W3Schools
- Unreal Engine 5
- 프로그래밍
- 재귀
- 오류
- 백준
- Unity
- c++
- loop
- github
- guide
- Basic
- dynamic
- python
- 기초
- C#
- String
- Class
- parameter
- Material
- 문제풀이
- Algorithm
- Programming
- Tutorial
- UE5
- DP
- 파이썬
- w3school
- 시작해요 언리얼 2022
- dfs
Archives
- Today
- Total
행복한 개구리
백준 22.03.20. 1010번 - 다리 놓기 본문
T = int(input())
dp = [[1] for i in range(31)]
for i in range(1, 31):
for j in range(i+1):
if j == 0:
dp[i][j] == 1
elif j == i:
dp[i].append(1)
else:
dp[i].append(dp[i-1][j-1]+dp[i-1][j])
for _ in range(T):
a, b = map(int, input().split())
if a < b:
a, b = b, a
print(dp[a][b])
- 결국 서쪽 다리와 동쪽 다리의 조합을 구하는 문제입니다.
- 그리고 출처에 다이나믹 프로그래밍이 포함되어 있길래 dp를 이용해보았습니다.
- dp를 이용하여 파스칼의 삼각형을 만들겁니다.
- 이항의 0제곱일 때는 이항계수가 1이므로 dp의 기본값들을 1로 설정해주었습니다.
- 그리고 N과M이 30까지 주어질 수 있으므로 30제곱의 이항계수까지 구할 수 있도록 범위를 설정했습니다.
- 중첩반복문을 통하여 파스칼의 삼각형을 만들 것입니다.
- 파스칼의 삼각형에서 가장 처음과 마지막 계수는 1이므로 그에 맞게 조건을 설정해주었습니다.
- 나머지 부분(중간부분)은 dp를 이용하여 값을 할당할 수 있도록 했습니다.
- 만들어진 dp를 바탕으로 값을 출력해주면 됩니다.
'Algorithm > BaekJoon' 카테고리의 다른 글
백준 22.03.23. 1676번 - 팩토리얼 0의 개수 (0) | 2022.03.23 |
---|---|
백준 22.03.21. 9375번 - 패션왕 신해빈 (0) | 2022.03.21 |
백준 22.03.20. 11051번 - 이항 계수2 (0) | 2022.03.20 |
백준 22.03.20. 11050번 - 이항 계수 1 (0) | 2022.03.20 |
백준 22.03.17. 2981번 - 검문 (0) | 2022.03.18 |