한 줄의 사이즈가 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 ++
'노트정리 > 알고리즘 놀이' 카테고리의 다른 글
네모로직 알고리즘 - simple spaces를 찾은 이후에 simple boxes하는 방법, forcing (0) | 2015.02.20 |
---|---|
네모로직 알고리즘 - 마땅히 비워야할 셀 구하는 방법, simple spaces (2) | 2015.02.18 |
엘리베이터 시뮬레이터 만드는 방법 (0) | 2014.06.25 |
깊이우선탐색과 너비우선탐색의 차이점, 간단하게. (0) | 2014.02.13 |
네모로직 플래쉬 게임 (0) | 2014.01.01 |
네모로직 알고리즘 – 당연히 채워지는 셀 구하는 공식, simple boxes (2) | 2014.01.01 |
네모로직 풀이 알고리즘에 대한 소개 (0) | 2013.12.26 |
네모로직 재미있네요. (0) | 2013.12.26 |