한 줄의 사이즈가 7칸이고, 7칸을 채울 수 있는 점들이 2, 1로 주어진다고 할 때 이를 배열로 표현하면

 

{ , , , , , , , }

 

2칸이 채워지는 경우의 머리 위치, 꼬리 위치, 1칸이 채워지는 경우의 머리 위치, 꼬리 위치를 변수로 표현해보면

 

int size, n1, n2;

int n1Head, n1Tail, n2Head, n2Tail;

 

에 대해서

 

size = 7;

n1 = 2;

n2 = 1;

 

이므로

 

n1Head = 0;

n1Tail = 1; //0+(n1-1);

n2Head = n1Tail+2;

n2Tail = n2Head+(n2-1);

 

칸이 채워질 수 있는 모든 경우는 (n1Head, n1Tail), (n2Head, n2Tail)로 표현할 때,

(0, 1), (3, 3)

(0, 1), (4, 4)

(0, 1), (5, 5)

(0, 1), (6, 6)

그림으로 표현하면

##_#___

##__#__

##___#_

##____#

 

다음으로 n1Head++, n1Tail++이면

(1, 2), (4, 4)

(1, 2), (5, 5)

(1, 2), (6, 6)

_##_#__

_##__#_

_##___#

 

다음으로 n1Head++, n1Tail++이면

(2, 3), (5, 5)

(2, 3), (6, 6)

__##_#_

__##__#

 

다음으로 n1Head++, n1Tail이면

(3, 4), (6, 6)

___##_#

 

반복문으로 만든다고 할 때, 한 줄에 대해서 이중 중첩 반복문으로 만들고,

n2에 대해서 초기식은 n1Tail을 기준으로, 조건식은 size를 기준으로, 증감식은 n2의 Head와 Tail을 ++

n1에 대해서 초기식은 0에서 시작해서, 조건식은 size에 대한 최대 n2Head를 기준으로, 증감식은 역시 Head, Tail ++

Posted by 공돌이pooh
,