검색결과 리스트
알고리즘에 해당되는 글 7건
- 2014.10.22 c언어 int string 변환
- 2014.10.22 c언어 시계방향으로 최소값 구하기
- 2014.10.22 문자열 비교(strcmp)
- 2014.10.22 c언어 char int변환
- 2014.10.22 int 형 데이터 자리수 구하기
- 2014.10.22 C언어 최대공약수 최소공배수 구하기
- 2014.01.28 동적계획법
글
c언어 int string 변환
알고리즘
2014. 10. 22. 06:06
1 2 3 4 5 6 7 8 9 | int len = sprintf(buf, "%d", a); int aaa = 0; int power = 1; for(int i=0; i<len; i++) { aaa += (buf[len-i-1] - '0') * (power); power *= 10; } |
'알고리즘' 카테고리의 다른 글
c언어 시계방향으로 최소값 구하기 (0) | 2014.10.22 |
---|---|
문자열 비교(strcmp) (0) | 2014.10.22 |
c언어 char int변환 (0) | 2014.10.22 |
int 형 데이터 자리수 구하기 (0) | 2014.10.22 |
C언어 최대공약수 최소공배수 구하기 (0) | 2014.10.22 |
설정
트랙백
댓글
글
c언어 시계방향으로 최소값 구하기
알고리즘
2014. 10. 22. 06:04
1 2 3 4 5 6 7 8 9 10 | int data = 1526; int size = 3; int min = INT_MAX; for(int i=0; i<=size; i++) { data = (data%1000) * 10 + data/1000; if(min>data) min = data; } |
'알고리즘' 카테고리의 다른 글
c언어 int string 변환 (0) | 2014.10.22 |
---|---|
문자열 비교(strcmp) (0) | 2014.10.22 |
c언어 char int변환 (0) | 2014.10.22 |
int 형 데이터 자리수 구하기 (0) | 2014.10.22 |
C언어 최대공약수 최소공배수 구하기 (0) | 2014.10.22 |
설정
트랙백
댓글
글
문자열 비교(strcmp)
알고리즘
2014. 10. 22. 06:02
1 2 3 4 5 6 | int strcmp(const char *a, const char *b) /* a > b 이면 리턴값 양수 a < b 이면 리턴값 음수 a == b 이면 리턴값 0 */ |
'알고리즘' 카테고리의 다른 글
c언어 int string 변환 (0) | 2014.10.22 |
---|---|
c언어 시계방향으로 최소값 구하기 (0) | 2014.10.22 |
c언어 char int변환 (0) | 2014.10.22 |
int 형 데이터 자리수 구하기 (0) | 2014.10.22 |
C언어 최대공약수 최소공배수 구하기 (0) | 2014.10.22 |
설정
트랙백
댓글
글
c언어 char int변환
알고리즘
2014. 10. 22. 06:01
1
2
3
4 |
char c = '1';
int i;
i = c-'0'; |
'알고리즘' 카테고리의 다른 글
c언어 시계방향으로 최소값 구하기 (0) | 2014.10.22 |
---|---|
문자열 비교(strcmp) (0) | 2014.10.22 |
int 형 데이터 자리수 구하기 (0) | 2014.10.22 |
C언어 최대공약수 최소공배수 구하기 (0) | 2014.10.22 |
동적계획법 (0) | 2014.01.28 |
설정
트랙백
댓글
글
int 형 데이터 자리수 구하기
알고리즘
2014. 10. 22. 06:00
1 2 3 4 5 6 7 8 9 10 11 12 | // int형 데이터 자리수 구하기 // 10으로 계속 나누어 자리수를 구한다. int len = num; int count = 0; do { num = int(num/10); count++; }while(num > 0) // 출력 printf("자리수 = %d\n", count); |
'알고리즘' 카테고리의 다른 글
c언어 시계방향으로 최소값 구하기 (0) | 2014.10.22 |
---|---|
문자열 비교(strcmp) (0) | 2014.10.22 |
c언어 char int변환 (0) | 2014.10.22 |
C언어 최대공약수 최소공배수 구하기 (0) | 2014.10.22 |
동적계획법 (0) | 2014.01.28 |
설정
트랙백
댓글
글
C언어 최대공약수 최소공배수 구하기
알고리즘
2014. 10. 22. 05:58
1 2 3 4 5 6 7 8 9 10 11 12 13 | // 최대 공약수 int gcd(int a, int b) { if(b == 0) return a; gcd(b, a%b); } // 최소 공배수 int lcm(int a, int b) { return a * b / gcd(a, b); } |
'알고리즘' 카테고리의 다른 글
c언어 시계방향으로 최소값 구하기 (0) | 2014.10.22 |
---|---|
문자열 비교(strcmp) (0) | 2014.10.22 |
c언어 char int변환 (0) | 2014.10.22 |
int 형 데이터 자리수 구하기 (0) | 2014.10.22 |
동적계획법 (0) | 2014.01.28 |
설정
트랙백
댓글
글
동적계획법
알고리즘
2014. 1. 28. 02:54
동적 계획법은 문제를 분할하고 부분 문제의 해를 구한 뒤 구해야 할 해를 부분 문제의 해를 이용해서 구하는 방법이다. 이 때 부분 문제의 해는 배열에 기억시켜 놓은 뒤에 재활용한다. 분할 정복과 비슷하다고 생각할지 모르겠다.
아래의 글을 보고 둘 사이의 차이점을 이해해 보자.
▶분할 정복법과 동적 계획법을 이용한 n!구하기
1) 분할정복법
int fact(int n); main() { int n, k; table[1] = 1; scanf("%d", &n); k = fact(n); } int fact(int n) { int i; if(n < 1) return 1; k = n * fact(n-1); return k; }
2) 동적계획법
void fact(int n); main() { int n; table[1] = 1; scanf("%d", &n); fact(n); } void fact(int n) { int i; for(i=2; i <=n; i++) table[i] = i * table[i-1]; }
<동적계획법>
위의 펙토리얼 프로그램은 n!의 값을 분할정복법과 동적계획법의 과정을 나타낸다.동적 계획법을 이용한 프로그램은 최종 결과값을 만들기 위해 처음부터 하나씩 해결해서 배열에 넣는다. 그렇게 구한 값을 이용하여 최종 결과값을 얻게 된다.
<분할정복법>
반면, 분할정복법으로 짜여진 프로그램은 값을 구하기 위해 부분 문제의 해를 구하고, 그 부분문제의 해를 구하기 위해 부분 문제의 부분 문제의 해를 구하는 방식으로 동작한다.
void table[100]; main() { table[0] = 1; table[1] = 1; scanf("%d", &n); fi(n); } void fi(int n) { int i; for(i=2; i<=n; i++) table[i]:=table[i-1]+table[i-2]; }
피보나치 수열을 구하기 위한 점화식은 F(n) = F(n-1) + F(n-2) 이다. 배열을 이용하여 F(1) + F(2), F(2) + F(3), ..., F(n-1) + F(n-2)를 구하는 방식으로 값을 구하였다. 분할 정복법에서는 F(n) = F(n-1) + F(n-2)에서 시작하여 F(n-1)과 F(n-2)를 각각 구한뒤 마지막에 결과를 합치는 방식으로 문제를 푼다.
▶ 분할정복법 : 큰 문제를 부분으로 분할하여 각각의 부분 문제를 해결한뒤 결과를 모음
▶ 동적계획법 : 작은 문제를 하나하나 계산하여 원하는 결과에 도달
'알고리즘' 카테고리의 다른 글
c언어 시계방향으로 최소값 구하기 (0) | 2014.10.22 |
---|---|
문자열 비교(strcmp) (0) | 2014.10.22 |
c언어 char int변환 (0) | 2014.10.22 |
int 형 데이터 자리수 구하기 (0) | 2014.10.22 |
C언어 최대공약수 최소공배수 구하기 (0) | 2014.10.22 |