Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- aws
- 로드밸런서
- DFS
- 월미도
- 백준
- Kafka
- Docker
- 스프링
- 클라우드
- 프로그래밍문제
- 백트래킹
- VPC
- 인천여행
- 자료구조
- Apache Kafka
- 알고리즘
- Spring
- 클라우드 컴퓨팅
- Spring Boot
- Spring Data JPA
- 스프링 부트
- 카프카
- 오일러프로젝트
- Elasticsearch
- springboot
- 스프링부트
- 쿠버네티스
- gcp
- 코드업
- JPA
Archives
- Today
- Total
GW LABS
[코드업 3701] 파스칼의 삼각형 본문
조합을 구하는 동적계획법 알고리즘을 조합을 구하는 동적계획법 알고리즘을 사용하면 간단하게 풀 수 있는 문제였다. 조합의 n값이 40 이상만 되도 int 자료형으로 표현할 수 없는데 이런 경우를 방지하기 위해 unsigned long으로 캐스팅해주면 문제는 없다.
#include <cstdio>
using namespace std;
unsigned long combCache[100][100];
unsigned long comb(int n, int r) {
if (n == r || r == 0 || n == 0) {
return 1;
}
else {
if (combCache[n][r]) {
return combCache[n][r];
}
else {
return combCache[n][r] = comb(n - 1, r - 1) + comb(n - 1, r);
}
}
}
void pascal(int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
printf("%lu ", comb(i, j));
}
printf("\n");
}
}
int main() {
int n;
scanf("%d", &n);
pascal(n);
return 0;
}
참고로 앞으로 C++를 쓰더라도 cout, cin은 알고리즘 문제에서 사용하면 지양해야 한다. input, output 성능으로 실패하지 않도록 하자 ㅠ.ㅠ
'Algorithm & DataStructure' 카테고리의 다른 글
[코드업 3710] 369 게임 3 (Large Test Case) (0) | 2020.07.10 |
---|---|
[코드업 3707] 합의 개수 (0) | 2020.07.07 |
[오일러 프로젝트 28] 1001×1001 나선모양 행렬에서 대각선 원소의 합은? (0) | 2020.06.28 |
[오일러 프로젝트 25] 피보나치 수열에서 처음으로 1000자리가 되는 항은 몇 번째? (0) | 2020.06.18 |
[오일러 프로젝트 23] 두 초과수의 합으로 나타낼 수 없는 모든 양의 정수의 합은? (0) | 2020.06.17 |
Comments