산길 내려가는 경로찾기 http://hancom.jungol.co.kr/prog/Hanal/hanalView.php?qs_code=1024&sk=&sv=&menu=&sst=qs_code&sod=asc&page=10&fv=1 문제는 위 주소입니다. 문제 보자마자 재귀가 생각나서 허접하게 짜봤는데요.. 이게 재귀를 너무 많이 해서 그런지 10개중에 2개가 시간초과가 뜨더라구요.. ㅠㅠ 다른방법으로 풀려고 해봤는데 이 방법 .. c·c++/c 프로그래밍 2013.05.04
스캐너(token으로 쪼개기) #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> typedef struct _token { int type; int value; char *lexeme; } token; token* key_or_id(FILE *fin, int x) { const char *keywords[12]={ "else", "if", "int", "return", "void", "while", "char", "for", "do", "switch", "continue", "break" }; token *tok; int i, j, n=12; char buf[100]; .. c·c++/c 프로그래밍 2013.05.03
paper자르기 프로그램 명: paper 제한시간: 1 초 그림과 같이 직사각형 모양의 종이가 있다. 이 종이는 가로 방향과 세로 방향으로 1 마다 점선이 그어져 있다. 가로 점선은 위에서 아래로 1 번부터 차례로 번호가 붙어 있고, 세로 점선은 왼쪽에서 오른쪽으로 번호가 붙어 있다.점선을 따라 이 종이를 칼.. c·c++/c 프로그래밍 2013.05.02
1부터 1000까지 3,6,9 의 숫자가 들어가는 소수들의 합을 구하는 문제 #include <stdio.h> // 2이상의 n에 대해서만 동작, 1일 경우는 소수로 판별, 따라서 2이상의 경우만 호출해준다. int isprime(int n) { int i=2; while(i*i<n && n%i!=0) i+=1; if(i*i>n) return 1; return 0; } // 3,6,9 중의 한수자를 가지면 1을 반환한다. int has369(int n) { int x; while(n!=0) { x=n%10; if(x>0 && x%3==0) return 1.. c·c++/c 프로그래밍 2013.05.01
0과 1사이의 기약분수 프로그램 명: fraction 제한시간: 2 초 수 N 을 입력으로 받아 0 부터 N 까지의 수를 사용하여 0 과 1 사이(0,1 포함)에 있는 기약분수를 구하는게 문제이다. 예를 들어 , N 이 5 이면 0 , 1 , 2 , 3 , 4 , 5 를 사용하여 0 과 1 사이수를 크기 순으로 구하면 0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1 이 된다. 시간.. c·c++/c 프로그래밍 2013.04.28
floor, ceil 함수 #include <stdio.h> int floor1(double x) { int flr=(int)x; if(x<(double)flr) { flr=flr-1; } return flr; } int ceil1(double x) { int clg=(int)x; if((double)clg<x) { clg=clg+1; } return clg; } int main() { double x; while(1) { printf("입력: "); scanf("%lf", &x); if(x==0) break; printf("바닥=%d 천정=%d\n", floor1(x), ceil1(x)); } return 0; } c·c++/c 프로그래밍 2013.04.20
직사각형 그리기 #include <stdio.h> int main() { int x, y, z, z2, d, dd, e; while(1) { printf("수를 입력하세요:"); fflush(stdin); scanf("%d %d",&z, &z2); if(z>z2) e=z2; else e=z; if(z<=0) break; for(y=0;y<z;y++) { for(x=0;x<z2;x++) { d=x*z-y*z2; dd=z*z2-x*z-y*z2-z; if(x==0||y==0||x==z2-1||y==z-1) printf("# "); else if(-e<d && d<e) printf("# "); else if(-e<dd &.. c·c++/c 프로그래밍 2013.04.19
1-(1+2)+(1+2+3)-(1+2+3+4)+(1+2+3+4+5)- ...- (1+2+3+...+10)의 합 1-(1+2)+(1+2+3)-(1+2+3+4)+(1+2+3+4+5)- ...- (1+2+3+...+10)을 계산해서 결과출력 #include <stdio.h> int main() { int i, n=10, sum=0, total=0, x=1; printf("정수: "); scanf("%d", &n); for(i=1;i<=n;i+=1) { sum=sum+i; total+=x*sum; x=-x; } printf("total=%d\n",total); return 0; } c·c++/c 프로그래밍 2013.04.19
1000단위 마다 ,(콤마)넣기 #include <stdio.h> void comma3(int n, int i) { if(n>9) { comma3(n/10, i+1); if(i%3==0) printf(","); } printf("%d", n%10); } int main() { int n; printf("정수: "); scanf("%d", &n); comma3(n, 1); printf("\n"); return 0; } c·c++/c 프로그래밍 2013.04.19
369게임 #include <stdio.h> int main() { int i, n, a, b, c, x; printf("정수입력: "); scanf("%d", &n); for(i=1;i<=n;++i) { x=i; a=x/100; x=x%100; b=x/10; x=x%10; c=x; if(a==0) { printf(" "); if(b==0) printf(" "); else if(b%3==0) printf("*"); else printf("%d", b); } else if(a%3==0) { printf(" *"); if(b>0&&b%3==0) printf("*"); else printf("%d", b); } else { printf(" %d", a.. c·c++/c 프로그래밍 2013.04.17