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.0131 sec