DNA & CAPS 연합 스터디2009. 11. 29.송치원(scw0619@nate.com)
오늘 할 이야기?2009. 11. 08. 문제Sort3N+1긴 자리수의 덧셈2009. 11. 15. 문제MinQ의 기분아지트 정하기진법 변환기
A. Sort2개의 컵에 콜라와 우유가 있는데 바꿔 담고 싶다. 어떻게 해야 할까?->새로운 컵이 하나 더 있으면 바꿔 담을 수 있겠다 :D새 컵=콜라;콜라=우유;우유=새 컵;Temp=A;A=B;B=Temp;
A. Sort느린방법선택 정렬거품 정렬삽입 정렬etc빠른방법Quick SortMerge SortHeap Sortetc
A. Sort선택정렬처음부터 차근차근 정렬해 나간다예제 소스	[ Data에 자료가 1부터 N까지 있을 경우 ]for(inti = 1 ; i < N ; i++){	for(int j = i+1 ; j <= N ; j++)		if(Data[i] > Data[j]) 			Swap(Data[i], Data[j]);}
A. Sort거품정렬인접한 자료만 비교해 나간다.정렬은 뒤쪽부터 차례대로 이뤄진다.예제 소스	[ Data에 자료가 1부터 N까지 있을 경우 ]for(inti = 1 ; i < N ; i++){	for(int j = 1 ; j <= N-i ; j++)		if(Data[j] > Data[j+1]) 			Swap(Data[j], Data[j+1]);}
B. 3N+1짝 수 일 때?N=3*N+1홀 수 일 때?N=N/2;입력데이터 A와 B중 A가 더 큰 경우?
B. 3N+1Int Temp=i,Count=0;while(Temp!=1){	if(Temp%2) Temp=Temp*3+1;	else Temp/=2;	Count++;}
C. 긴 자리수의 덧셈입력을 어떻게 받을 것인가?1,000자리까지 입력 될 수 있다!int형으로 입력 받으면 될까?자리를 어떻게 맞출 것 인가?Carry 처리는 어떻게 할 것인가?
A.  MinQ의 기분인접한 수 차로 1~N-1 모두 나와야 Jolly언제 Not jolly 일까?->인접한 수의 차가 1~N-1 안에 없을 때!->인접한 수의 차가 이미 나온 수 일 때!
A. MinQ의 기분boolCheck[3005];for(inti = 1 ; i < N ; i++){int u=abs( Data[i] – Data[i+1] );	if( ( u<1 || u>=N ) || Check[u] ) break;	Check[u]=true;}if(i==N) printf(“Jolly\n”);else printf(“Not jolly\n”);
B. 아지트 정하기아지트를 길에 설치하는 게 좋을까?->아지트는 집 중 한곳에 설치하는 게 이득!어떤 집에 설치하는 게 좋을까?->가장 외곽에 있는 집에 설치하면 될까?
C. 진법 변환기실제로 진법 변환은 어떻게 할까?->”/”와 “%”연산을 통해 구할 수 있겠다!:D10진수를 넘어가면?-> 숫자를 대체할 알파벳을 출력해야 한다!
출력 방법Test Case가 여러 개일 경우->하나의 Test Case를 해결한 후 결과 출력!입력형식과 출력형식은 반드시 똑같이!->입력형식과 출력형식은 독립적임!->따라서 각각 독립적으로 맞춰줘야함!
EOF 처리 방법while(scanf(“%d%d”,&a,&b)!=EOF){	//Process Code.	}위와 같은 방법으로 EOF를 간단히 해결!
하지 말아야 할 코딩 스타일for(inti = 1 ; i <= strlen(Data) ; i++){	if(Data[i]==‘A’) printf(“Stop”);else if(Data[i]==‘B’) printf(“Wait!”);}for문 한 번 돌 때마다 strlen()호출!strlen()함수는 결국 Data배열을 탐색->속도가 많이 느림!!!

Stack

  • 1.
    DNA & CAPS연합 스터디2009. 11. 29.송치원([email protected])
  • 2.
    오늘 할 이야기?2009.11. 08. 문제Sort3N+1긴 자리수의 덧셈2009. 11. 15. 문제MinQ의 기분아지트 정하기진법 변환기
  • 3.
    A. Sort2개의 컵에콜라와 우유가 있는데 바꿔 담고 싶다. 어떻게 해야 할까?->새로운 컵이 하나 더 있으면 바꿔 담을 수 있겠다 :D새 컵=콜라;콜라=우유;우유=새 컵;Temp=A;A=B;B=Temp;
  • 4.
    A. Sort느린방법선택 정렬거품정렬삽입 정렬etc빠른방법Quick SortMerge SortHeap Sortetc
  • 5.
    A. Sort선택정렬처음부터 차근차근정렬해 나간다예제 소스 [ Data에 자료가 1부터 N까지 있을 경우 ]for(inti = 1 ; i < N ; i++){ for(int j = i+1 ; j <= N ; j++) if(Data[i] > Data[j]) Swap(Data[i], Data[j]);}
  • 6.
    A. Sort거품정렬인접한 자료만비교해 나간다.정렬은 뒤쪽부터 차례대로 이뤄진다.예제 소스 [ Data에 자료가 1부터 N까지 있을 경우 ]for(inti = 1 ; i < N ; i++){ for(int j = 1 ; j <= N-i ; j++) if(Data[j] > Data[j+1]) Swap(Data[j], Data[j+1]);}
  • 7.
    B. 3N+1짝 수일 때?N=3*N+1홀 수 일 때?N=N/2;입력데이터 A와 B중 A가 더 큰 경우?
  • 8.
    B. 3N+1Int Temp=i,Count=0;while(Temp!=1){ if(Temp%2)Temp=Temp*3+1; else Temp/=2; Count++;}
  • 9.
    C. 긴 자리수의덧셈입력을 어떻게 받을 것인가?1,000자리까지 입력 될 수 있다!int형으로 입력 받으면 될까?자리를 어떻게 맞출 것 인가?Carry 처리는 어떻게 할 것인가?
  • 10.
    A. MinQ의기분인접한 수 차로 1~N-1 모두 나와야 Jolly언제 Not jolly 일까?->인접한 수의 차가 1~N-1 안에 없을 때!->인접한 수의 차가 이미 나온 수 일 때!
  • 11.
    A. MinQ의 기분boolCheck[3005];for(inti= 1 ; i < N ; i++){int u=abs( Data[i] – Data[i+1] ); if( ( u<1 || u>=N ) || Check[u] ) break; Check[u]=true;}if(i==N) printf(“Jolly\n”);else printf(“Not jolly\n”);
  • 12.
    B. 아지트 정하기아지트를길에 설치하는 게 좋을까?->아지트는 집 중 한곳에 설치하는 게 이득!어떤 집에 설치하는 게 좋을까?->가장 외곽에 있는 집에 설치하면 될까?
  • 13.
    C. 진법 변환기실제로진법 변환은 어떻게 할까?->”/”와 “%”연산을 통해 구할 수 있겠다!:D10진수를 넘어가면?-> 숫자를 대체할 알파벳을 출력해야 한다!
  • 14.
    출력 방법Test Case가여러 개일 경우->하나의 Test Case를 해결한 후 결과 출력!입력형식과 출력형식은 반드시 똑같이!->입력형식과 출력형식은 독립적임!->따라서 각각 독립적으로 맞춰줘야함!
  • 15.
    EOF 처리 방법while(scanf(“%d%d”,&a,&b)!=EOF){ //ProcessCode. }위와 같은 방법으로 EOF를 간단히 해결!
  • 16.
    하지 말아야 할코딩 스타일for(inti = 1 ; i <= strlen(Data) ; i++){ if(Data[i]==‘A’) printf(“Stop”);else if(Data[i]==‘B’) printf(“Wait!”);}for문 한 번 돌 때마다 strlen()호출!strlen()함수는 결국 Data배열을 탐색->속도가 많이 느림!!!