??

[기본과정, 2단계]



접속을 환영합니다~~
이 곳은2단계 학습장소입니다.
쉬운단계입니다.

2-1. 선택정렬

<프로그램-1> #include<stdio.h> int d[1001]; int main() { int i,j,n; scanf("%d",&n); for(i=1; i<=n; i++) scanf("%d",&d[i]); for(i=1; i<=n-1; i++){ for(j=i+1; j<=n; j++){ if(d[i] > d[j]){ d[0]=d[i]; d[i]=d[j]; d[j]=d[0]; } } } for(i=1; i<=n; i++)printf("%d ",d[i]); printf("\n"); return 0; } <프로그램-2> #include<stdio.h> int d[1001]; int main() { int i,j,n; scanf("%d",&n); for(i=1; i<=n; i++) scanf("%d",&d[i]); for(i=1; i<=n-1; i++){ t=i; for(j=i+1; j<=n; j++) if(d[t] > d[j]) t=j; d[0]=d[t]; d[t]=d[i]; d[i]=d[0]; } for(i=1; i<=n; i++)printf("%d ",d[i]); printf("\n"); return 0; }

2-2. 버블정렬

#include<stdio.h> int d[1001]; int main() { int i,j,n; scanf("%d",&n); for(i=1; i<=n; i++) scanf("%d",&d[i]); for(i=n-1; i>=1; i--){ for(j=1; j<=i; j++){ jj=j+1; if(d[j] > d[jj]){ d[0]=d[j]; d[j]=d[jj]; d[jj]=d[0]; } } } for(i=1; i<=n; i++)printf("%d ",d[i]); printf("\n"); return 0; }

2-3. 삽입정렬

#include<stdio.h> int d[1001]; int main() { int i,j,n; scanf("%d",&n); scanf("%d",&d[1]); for(i=2; i<=n; i++){ scanf("%d",&a); for(j=i-1; j>=1; j--){ if(d[j] > a)d[j+1]=d[j]; else break; } d[j+1]=a; } for(i=1; i<=n; i++)printf("%d ",d[i]); printf("\n"); return 0; }

2-4. 순위구하기

#include<stdio.h> int d[100], s[100]; int main() { int i,j,n; scanf("%d",&n); for(i=1; i<=n; i++) scanf("%d", &d[i]); for(i=1; i<=n; i++){ for(j=1; j<=n; j++){ if(d[i] < d[j]) s[i]=s[i]+1; } } for(i=1; i<=n; i++)printf("%d %d %d\n",i, d[i], s[i]+1); return 0; }

2-5. index sort

#include<stdio.h> int d[100]; int main() { int i, j, a, n; scanf("%d",&n); for(i=1; i<=n; i++){ scanf("%d", &a); d[a]++; } for(i=1; i<=100; i++){ if(d[i]>0){ for(j=1; j<=d[i]; j++){ printf("%d ",i); } } } return 0; }

2-6. merge sort

#include<stdio.h> int a[10001], b[10001], c[20002]; int main() { int an,bn,ak,bk,ck,i,j; scanf("%d",&an); for(i=1; i<=an; i++) scanf("%d",&a[i]); scanf("%d",&bn); for(i=1; i<=bn; i++) scanf("%d",&b[i]); ak=1; bk=1; ck=0; while(1){ if(a[ak]>b[bk]){ck++; c[ck]=b[bk]; bk++;} else{ck++; c[ck]=a[ak]; ak++;} if(ak>an || bk>bn)break; } if(ak>an){ for(i=bk; i<=bn; i++){ck++; c[ck]=b[i];} }else{ for(i=ak; i<=an; i++){ck++; c[ck]=a[i];} } for(i=1; i<=ck; i++)printf("%d", c[i]); printf("\n"); return 0; }

2-7. 큰 수 * 큰 수


#include<stdio.h> #include<string.h> int main() { char a[1000], b[1000]; int aa[1000]={0,}, bb[1000]={0,}, z[1000]={0,}; int ka, kb, i, k, j, ii; scanf("%s %s", a, b); ka=strlen(a); for(i=0; i<ka; i++) aa[ka-i]=a[i]-'0'; kb=strlen(b); for(i=0; i<kb; i++) bb[kb-i]=b[i]-'0'; for(i=1; i<=ka; i++){ for(j=1; j<=kb; j++){ k=i+j-1; z[k]=z[k]+aa[i]*bb[j]; if(z[k]>=10){ z[k+1]=z[k+1]+z[k]/10; z[k]=z[k]%10; } printf("%d %d=>",aa[i], bb[j]); for(ii=ka+kb; ii>=1; ii--)printf("%d",z[ii]); printf("\n"); } } for(i=ka+kb; i>=1; i--)printf("%d",z[i]); printf("\n"); return 0; }

2-8. 2의 n승 구하기

#include<stdio.h> int d[1001]; int main() { int i, n, ff=0; scanf("%d", &n); d[1] = 1; for(i=1; i<=n; i++){ for(j=100; j>=1; j--){ d[j] = d[j] * 2; if(d[j] >= 10){ d[j+1] = d[j+1] + (d[j] /10); d[j] = d[j] % 10; } } } for(i=100; i>=1; i--){ if(d[i] !=0) ff=1; if(ff==1) printf("%d",d[i]); } return 0; }

2-9. 교집합 & 합집합

#include<stdio.h> int d[101]; int main() { int i,n,a; scanf("%d", &n); for(i=1; i<=n; i++){ scanf("%d", &a); d[a]=1; } scanf("%d", &n); for(i=1; i<=n; i++){ scanf("%d", &a); d[a] = d[a] + 3; } printf("a u b={"); for(i=1; i<=100; i++){ if(d[i]>0) printf("%d ",i); } printf("}\n"); printf("a n b={"); scanf("%d", &n); for(i=1; i<=100; i++){ if(d[i]==4) printf("%d ",i); } printf("}\n"); return 0; }

2-10. 1~n 소수 개수 구하기

#include<stdio.h> int d[1001]; int main() { int i,n; scanf("%d", &n); for(i=2; i<=n; i++){ if(d[i]==0){ for(j=i*2; j<=n; j+=i) d[j]=1; } } for(i=2; i<=n; i++){ if(d[i]==0) printf("%d ", i); } printf("\n"); return 0; }

2-11. 파스칼 삼각형

-따라하기 1단계 #include<stdio.h> int main() { int n; scanf("%d",&n); printf("%d\n",n); return 0; } -따라하기 2단계 #include<stdio.h> int main() { int n,i; scanf("%d",&n); for(i=1; i<=n; i++){ printf("i=%d\n",i); } return 0; } -따라하기 3단계 #include<stdio.h> int main() { int n,i,j; scanf("%d",&n); for(i=1; i<=n; i++){ for(j=1; j<=n; j++){ printf("i=%d, j=%d\n",i,j); } printf("\n"); } return 0; } -따라하기 4단계 #include<stdio.h> int d[101][202]; int main() { int n,i,j; scanf("%d",&n); d[1][n]=1; for(i=2; i<=n; i++){ for(j=(n+1)-i; j<=n*2+1; j++){ d[i][j]=d[i-1][j-1]+d[i-1][j+1]; } } for(i=1; i<=n; i++){ for(j=1; j<=n*2+1; j++){ printf("%3d",d[i][j]); } printf("\n"); } return 0; } -따라하기 5단계 #include<stdio.h> int d[101][202]; int main() { int n,i,j; scanf("%d",&n); d[1][n]=1; for(i=2; i<=n; i++){ for(j=(n+1)-i; j<=n*2+1; j++){ d[i][j]=d[i-1][j-1]+d[i-1][j+1]; } } for(i=1; i<=n; i++){ for(j=1; j<=n*2+1; j++){ if(d[i][j]==0) printf(" "); else printf("%3d",d[i][j]); } printf("\n"); } return 0; }




Number of visitors today: 70709

??