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 |
Tags
- 자바서블릿
- 페치조인
- 대량쿼리
- joinfetch
- JPQL
- jscalendar
- 스프링데이터흐름
- LIST
- values()
- Generic
- 페이징
- paging
- JQuery
- jQuery값전달
- javaservlet
- JPA
- springflow
- jQueryUI
- 프로젝트생성
- 제너릭
- 엔티티직접사용
- jQuery값전송
- 제네릭
- Hibernate
- calendar
- fullcalendar
- javascriptcalendar
- namedQuery
- 벌크연산
- fetchjoin
Archives
- Today
- Total
가자공부하러!
알고리즘(1) - 소수, 약수, 소인수분해 등 본문
> 임의의 정수를 입력받아 그 안에 포함된 소수의 합을 구하는 코드.
내 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | int main() { int a, sum, j, k; sum = 0; k = 2; printf("입력값 : "); scanf("%d", &a); printf("\n"); do { for (j = 2; (k%j) > 0; j++) { } if (j == k) { sum += k; } k++; printf("a=%d j=%d k=%d sum=%d \n",a,j,k,sum); } while (k < a); printf("\n"); } | cs |
*틀렸던 부분 :
교재 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | int main() { int a, hap, k, j; scanf("%d", &a); hap = 0; k = 2; while (1){ j = 2; while (k%j != 0) { j++; if (k == j) hap += k; if (k < a) k++; else { printf("&d", hap); break; } } } } | cs |
입력값 : 10
출력값 : 17(2+3+5+7)
> 배열 A[99]에 2~100 사이의 정수를 기억시킨 후 이 배열을 이용하여 소수의 개수를 구하시오.
내 코드
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 | int main() { int k, i, j, m; int a[99]; for (i = 0; i < 99; i++) { a[i] = i + 2; } j = 0; for (i = 0; i < 99; i++) { if (a[i] != 0) { j++; k = a[i]; for (m = i; m < 99; m += k) { a[m] = 0; } } else { } } printf("k=%d i=%d j=%d m=%d \n", k, i, j, m); } | cs |
*틀렸던 부분 :
교재 코드
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 32 33 34 35 36 | int main() { int k, i, j, m; int a[99]; k = 1; do { k++; a[k - 2] = k; } while (k < 100); i = -1, j = 0; while (1) { i++; if (i > 98) { printf("%d", j); break; } if (a[i] == 0) { continue; } j++; m = i; while (1) { m += a[i]; if (m > 98) { break; } a[m] = 0; } } } | cs |
출력값 : 25(2와 100 사이의 정수 중 소수의 개수)
> 임의의 정수 2개를 입력받아 두 수의 최대공약수와 최소공배수를 산출.
내 코드
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 32 | int main() { int a, b, big, small, qtt, rmd, gcm, lcm; printf("정수 2개 입력 : "); scanf("%d %d", &a, &b); if (a > b) { big = a; small = b; } else { big = b; small = a; } do { qtt = big / small; rmd = big - (small*qtt); if (rmd == 0) { gcm = small; lcm = a * b / gcm; break; } else { big = small; small = rmd; } } while (1); printf("gcm = %d lcm = %d", gcm, lcm); } |
|
*틀렸던 부분 :
교재 코드
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 | int main() { int a, b, big, small, mok, nmg, gcm, lcm; scanf("%d %d", &a, &b); if (a >= b) { big = a; small = b; } else { big = b; small = a; } while (1) { mok = big / small; nmg = big - mok * small; if (nmg == 0) { gcm = small; lcm = a * b / gcm; printf("%d %d", gcm, lcm); break; } big = small; small = nmg; } } | cs |
입력값 : 4 5
출력값 : 1 20
> 정수를 입력 받아 약수를 구해 출력하는 코드를 작성하시오.
내 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | int main() { int a[100], b, c, d, qtt, rmd, i; printf("약수를 구할 정수를 입력 : "); scanf("%d", &b); //정수입력받음 d = -1; //배열 인덱스 printf("\n"); //줄바꿈 for (c = 1; c <= b; c++) { qtt = b / c; //몫 계산 rmd = b - (qtt*c); //나머지 계산 if (rmd == 0) {//나머지가 0이면 약수이므로 저★장 a[++d] = c; //초기값이 -1이므로 쓸 때 마다 1씩 증가. 첫 번째는 0 } } printf("입력값 : %d \n약수 : ", b); //입력한 정수 출력 for (i = 0; i <= d; i++) { printf("%d ", a[i]); } } | cs |
*틀렸던 부분 :
> 10번 줄 c값을 0으로 초기화해서 "Integer division by zero" 오류 발생
교재 코드
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 | int main() { int b, mok, nmg, i; int a[100]; scanf("%d", &b); int c = 0, d = -1; while (1) { c++; if (c <= b) { mok = b / c; nmg = b - mok * c; if (nmg == 0) { d++; a[d] = c; } } else { printf("%d", b); for (i = 0; i <= d; i++) printf("%d ", a[i]); break; } } } | cs |
> 정수를 입력 받아 소인수를 구해 출력하는 코드를 작성하시오.
내 코드
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 | cs |
*틀렸던 부분 :
> 반복문 로직 오류
교재 코드
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 32 33 34 | int main() { int b, c, d, e, mok, nmg; int a[100]; scanf("%d", &b); c = -1; while (1) { d = 2; e = (int)sqrt(b); while (1) { if (d > e) { d = b; break; } mok = b / d; nmg = b - mok * d; if (nmg == 0) break; else d++; } c++; a[c] = d; if (b == d) break; b = mok; } for (int i = 0; i <= c; i++) { printf("%d ", a[i]); } } | cs |
'공부 > 정보처리기사(실기)' 카테고리의 다른 글
알고리즘(6) - 배열응용 (0) | 2019.04.02 |
---|---|
알고리즘(5) - 병합, 스택, 배열 (0) | 2019.04.02 |
알고리즘(4) - 정렬 (0) | 2019.03.28 |
알고리즘(3) - 배수,보수,그레이코드 등 (0) | 2019.03.28 |
알고리즘(2) - 진법 변환, 최대최소 구하기 (0) | 2019.03.27 |
Comments