코딩
달팽이 배열
찬이2
2022. 10. 27. 00:35
참고자료
https://tragramming.tistory.com/25
5 4 4 3 3 2 2 1의 순으로 흘러는 것을 알아내긴 했는데, 그 순서를 반복문으로 구현하는 것에 많은 시행착오가 있었다.
결국 구글링을 통해 반복문 구현방법을 찾아냈다.
코드를 외우기보단 이해해야 하는 것이 정말 중요한 부분인 것 같다.
#include <iostream>
#include<string>
using namespace std;
int main() {
int snailarray[5][5]; //배열크기 지정
int x = -1; //행값 변수
int y = 0; //열값 변수
int k = 1; //배열에 저장할 변수
int swit = 1; //저장할 방향전환 변수
int length = 5; //반복 횟수정할 변수
while (true)
{
//5 4 4 3 3 2 2 1 순으로 반복횟수가 줄어들어야 함
//x값 변환
for (int i = 0; i < length; i++)
{
x += swit; //x = -1로 시작한 이유 : 먼저 계산되야 저장될 값이 곂치지 않고 반복됨
snailarray[x][y] = k++;
}
length--; //반복 횟수 감소
//종료조건이 여기있는 이유 : 마지막 반복횟수 1이 한번 돌고 종료되야 함
if (length == 0)
{
break;
}
//y값 변환
for (int j = 0; j < length; j++)
{
y += swit;
snailarray[x][y] = k++;
}
swit *= -1; //감소 또는 증가됨이 결정됨
}
for (int y = 0; y < 5; y++)
{
for (int x = 0; x < 5; x++)
{
cout << snailarray[x][y] << "\t";
}
cout << endl << endl;
}
int input;
cin >> input;
}