Without a Break

행 우선/열 우선 배열, 모래시계/달팽이 배열 본문

Algorithm/컴퓨터알고리즘

행 우선/열 우선 배열, 모래시계/달팽이 배열

와븨 2022. 11. 4. 23:20

행 우선/열 우선 배열

2차원 배열 A(5,5)의 원소에 다음과 같은 모습으로 값을 저장해주는 알고리즘 순서도

[순서도]

  • 1행 1열부터 값을 채운 뒤 A(R,C)에 V값을 저장하고, R과 V의 값을 1씩 증가시켜 저장하는 것을 R(행)이 다섯번째 행이 될 때까지 반복한다.
  • R(행)이 5보다 크면 반복문을 끝내고 C의 값을 1 증가시켜 준 뒤, 다시 R=1부터 반복한다. (V의 값은 계속 증가)
  • C(열)이 5보다 크면 알고리즘을 종료한다.

 

 

모래시계 모양 배열

2차원 배열 A(5,5)의 원소에 다음 그림과 같은 모습으로 값을 저장하는 알고리즘 순서도

 

[순서도]

  • 1~3행까지는 저장된 값의 수가 감소(5->3->1)하고 3~5행까지는 저장된 값의 수가 증가(1->3->5)하므로 3을 변수 M으로 두고 2개의 중첩반복문을 사용한다.
  • 첫번째 중첩반복문 (1~3행) : 1~3행까지의 값을 저장한다. 열 C의 값이 R부터 6-R까지 반복되고, A(R,C)에 배열 값을 저장하고 V를 1 증가시킨다.
  • 두번째 중첩반복문 (4~5행) : 4~5행까지의 값을 저장한다. 열 C의 값이 6-R부터 R까지 반복된다. A(R,C)에 배열 값을 저장하고 V를 1 증가시킨다.

 

 

달팽이 모양 배열

2차원 배열 A(5,5)의 원소에 1부터 25까지의 번호를 다음 그림과 같은 모습으로 저장해주는 알고리즘 순서도

 

[순서도]

  • 변수의 값은 달팽이 모양(시계 방향)으로 5->4->4->3->3->2->2->1->1의 형태로 저장되며, 열의 증가->행의 증가-> 열의 감소-> 행의 감소가 반복되며 저장된다.
  • 첫번째 반복문 : 1부터 K까지 순환을 진행한다. 할당할 일련번호를 증가시킨 후 열 번호를 S만큼 추가한 후 배열  A(i,j)에 값을 저장한다.
  • 첫 번째 반복문이 끝나면 K의 값을 1 감소시키고 K의 값이 0보다 크다면 두번째 반복문을 진행한다.
  • 두 번째 반복문 : 1부터 K까지 순환을 진행한다. 배열의 값을 1 증가시키고, 헹 번호를 S 만큼 추가한 후 배열 A(i,j)에 값을 저장한다.
  • 두 번째 반복문이 끝나면 S에 -1을 곱해 증감의 역할을 반전시키고 다시 첫번째 반복문으로 돌아가 반복한다.
  • K의 값이 0보다 작으면 알고리즘을 종료한다.