[뻘글] 다중for문을 for문 하나로 해결보기...
글쓴이: Scarecrow / 작성시간: 월, 2008/11/17 - 7:01오후
http://kldp.org/node/99915 에 뻘플로 첫플을 누리는 기쁨을 누리긴 했습니다만...
저도 진지한 리플을 달기 위해 나름 생각해 보았는데...
그 결과 본 뻘글이 완성되었습니다.
for(int i = 1; i < 5; ++i) { for(int j = 2; j < 5; ++j) { for(int k = 3; k < 5; ++k) { cout << i*100 + j*10 + k << ", "; } cout << "Hmm..." << "; "; } cout << "Oh!!" << endl; }
for(int i = 1; i < 5; ++i) { for(int j = 2, k = 3; j < 5;) { if(k < 5) { cout << i*100 + j*10 + k << ", "; ++k; } else { cout << "Hmm..." << "; "; ++j; k = 3; } } cout << "Oh!!" << endl; }
for(int i = 1, j = 2, k = 3; i < 5;) { if(j < 5) { if(k < 5) { cout << i*100 + j*10 + k << ", "; ++k; } else { cout << "Hmm..." << "; "; ++j; k = 3; } } else { cout << "Oh!!" << endl; ++i; j = 2; k = 3; } }
즉 3중for문도 for문 하나로 해결됩니다.
4중, 5중 그이상도 가능할겁니다.
그냥 다음과 같은 변환을 따르면 됩니다.
for( A1; B1; C1 ) { for( A2; B2; C2 ) { [Block 2]; } [Block 1]; }
for( A1, A2; B1; ) { if( B2 ) { [Block 2]; C2; } else { [Block 1]; C1; A2; } }
세줄요약: 이 변환에서 for문을 하나로 줄였다고 해서 생기는 장점은 하나 없구요...
수행시간은 변환전후 100% 동일합니다. ^^
전혀 최적화가 아니라능~
한단어 요약: 뻘짓
Forums: