접속을 환영합니다~~
이 곳은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;
}
|