U E D R , A S I H C RSS

PP Project/Colume2 Exercises

1. 3ฒˆ.

1.1.  €€ง ฐฉ‹ (JugglingAction)

  • Leonardongด ž‘„ํ•œ ฝ”“œ
  • ด 4‹œ„ 8„

~cpp 
#include <iostream> 
#include <string> 
using namespace std; 
 
string roll( string str,int n, int i ); 
int getGcd(int aN, int aM);

void main() 
{ 
	string str = "abcdefg"; 
	int n = str.length();
	int i;
	cout << "current : " << str << endl
		 << "shitf amount? : ";
	cin >> i;

	cout << "after shifting : " << roll(str, n, i) << endl;
} 

string roll( string str, int n, int i ) 
{
	if ( i % n != 0 )
		i %= n;
	int gcd = getGcd(n, i);
	char temp;
//	for ( int count = 0 ; count * gcd < i ; count ++ )
	for ( int count = 0 ; count < i ; count += gcd)
		for ( int tag = 0 ; tag < gcd ; tag++ ){
			temp = str[tag];
			for ( int base = tag ; base + gcd < n ; base += gcd)
				str[base] = str[base + gcd];
			str[base] = temp;
	}	
	return str;
}

int getGcd(int aN, int aM)
{
//assert aN > aM
	int remain;
	do{
		remain = aN % aM;
		aN = aM;
		aM = remain;
	}while( remain != 0 );

	return aN;
}
  • ž‘„ํ•œ ํ›„
     €žฅณต„„ ํ•˜‚˜„ „ด คณ  €ˆ˜ ตœŒ€ํ•œ •ˆ “ฐ คณ  …ธ ฅํ–ˆ‹ค. ‹ด ณตžกํ•ดกŒ‹ค. „‹จํ•œ ž„‹œ€ˆ˜Š” จค˜• ฒ ‹ค.

    ‹œํ”„ํŠธ ฐ˜ํ™”‹œœ„œ ƒฐํ•˜ณ  ฌธ œ—  ‘ํ–ˆ‹ค. ํ•˜€งŒ ํ’€ฆฌ€ •Š•˜‹ค. …„ ‹ค‹œ ฝณ , ทธ„ ด„œ ฌด—‡„ ž˜ ชป ดํ•ดํ–ˆŠ”€ ‚ดํˆ‹ค. ํ•˜€งŒ ž˜ชป ดํ•ดํ•œ €„€ —†—ˆ‹ค. ‹œ„ด €‚˜ณ , ฌธ œ ‹ค‹œ ฝœฉด ํžŒํŠธ –ป€ •Š„Œ ํ•˜Š” ƒฐ— ฌธ œ ฝ—ˆ‹ค. ฌธ œ—„œ ตœŒ€ณต•ฝˆ˜Š” ง„ ‹ ฒฝ“ฐ€ •Š•˜‹คŠ”  „ ฐœฒฌํ–ˆ‹ค. ตœŒ€ณต•ฝˆ˜ ดšฉํ•ด„œ ฒฐตญ ฌธ œ ํ•ดฒฐํ–ˆ‹ค.

    •ˆ ˜Š” ฐฉ‹— งค‹ฌฆฌ‹ค ณด‹ˆ ŠฌŠฌ ‹ต‹ตํ•˜ณ  งœฆด ‚ฌ‹ค. ญ”€ •„‹ˆ‹คŠ” ƒฐด žพธ “ค—ˆ‹ค.

    ํฌฒŒŠ” ฐ™€ •Œณ ฆฌฆ˜„ ‹คฅธ ฐฉ‹œกœ  ‘ ํ•  ˆ˜ žˆ‹ค.

    ง‰ํžŒ‹คŠ” Š‚Œด “คฉด, ฌธ œ ‹ค‹œ ดํ•ดํ•ดณธ‹ค. HowToSolveIt—„œ ‚˜™”˜ ฐœ œ ŠคŠคกœ ํ•ดณธ‹ค. ดฒˆ—Š” ณ  „˜–ด„ กฐดžˆŠ”€?Š” ฐœ œ ฆฌ ํ–ˆ”ฉด ํ•ดฒฐ ํ•  ˆ˜ žˆ—ˆ„ ฒƒด‹ค.

1.2. †’คง‘ธฐ ฐฉ‹

  • Leonardong ํ™ฉžฌ„ ˜ PairProgramming
  • 30„
    ~cpp 
    #include <iostream>
    #include <string>
    using namespace std;
    
    void reverse(string & str, int start, int end);
    
    void main()
    {
    	string str = "abcdefgh";
    	int n = str.size();
    	int i = 3;		//shift amount
    
    	int start, end;
    	start = 0;	end = i-1;
    	reverse( str, start, end);
    	start = i;	end = n-1;
    	reverse( str, start, end);
    	start = 0;	end = n-1;
    	reverse( str, start, end);
    	cout << str << endl;
    }
    
    void reverse(string & str, int front, int rear)
    {
    	char temp;
    	while( front < rear ){
    		temp = str[front];
    		str[front] = str[rear];
    		str[rear] = temp;
    		front++;
    		rear--;
    	}
    }
    

1.3. •Œณ ฆฌฆ˜2

ธํ•ดฒฐ
32m†Œš”
~cpp 
#include <iostream>
#include <string>
using namespace std;



void swap(string & str, int start1, int end1, int start2, int end2){
	if ( end1 - start1 == end2 - start2){
		char temp;
		int limit = end1 - start1 + 1;
		for ( int i = 0 ; i < limit ; i++){
			temp = str[start1];
			str[start1] = str[start2];
			str[start2] = temp;
			start1++;
			start2++;
		}
	}
}



int main()
{
	string str= "abcdefg"; 
	int n = str.size();
	int i = 3;			// abc defg
	swap(str,0,i-1, n-i, n-1);
//	swap(str, 0, i-1, n - i, n-1);
//	swap(str, 0, i-1, i, n-i);
	cout << str << endl;
	return 0;
}


2. ํ›„ธฐ

ํ™ฉžฌ„ 

‹ค†Œ —ฌœ  €€ณ  PairProgramming „ ํ–ˆ‹ค. ํ˜ž ํ• •Œณด‹ค ฌธ œ ํŒŒ•…ด ž˜ ˜—ˆณ  ญ”€ ํƒ ํŠธธ Š‚Œด “ค—ˆ‹ค. •„‰ฌšด  ดฉด ฌธ œ ํ•ดฒฐ— „ˆฌด งค‹ฌ ค„œ ฆฌํŽ™ํ† ง„ ฒŒ„ฆฌํ•œ ฒฐ šฐ•„ํ•œ ํ”„กœทธžจ„ ™„„ํ•˜€ ชปํ–ˆ‹ค. Š˜ ทธ ‡“ด —ญํ• — งžŠ” €ˆ˜ช… ถ™ดธฐŠ” –ด ต‹ค. งง•˜€งŒ ํฅ„„ํ•œ ‹œ„ด—ˆ‹ค.


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:24:00
Processing time 0.0154 sec