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