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 |
Tags
- Elasticsearch
- Apache Kafka
- 로드밸런서
- gcp
- aws
- 카프카
- 백준
- 오일러프로젝트
- Spring Boot
- 클라우드 컴퓨팅
- 클라우드
- 스프링 부트
- Docker
- 백트래킹
- 스프링부트
- 쿠버네티스
- 스프링
- 자료구조
- DFS
- VPC
- Spring Data JPA
- JPA
- 코드업
- springboot
- Spring
- 인천여행
- Kafka
- 알고리즘
- 프로그래밍문제
- 월미도
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