[자바스크립트 연습문제] 2차원 배열 순서대로 숫자 채우기

** 이 게시물은 텍스트게임메이커를 사용하고 있습니다. '시작하기에 앞서 & 텍스트게임메이커' 글을 반드시 먼저 읽어 보세요.

2차원 배열 순서대로 숫자 채우기

아래 그림처럼 5*5 2차원배열에 숫자를 순서대로 채워봅시다.


연습문제에 들어가기 앞서, 우선 모든 숫자가 자신의 줄번호로 채워진 5*5 2차원 배열을 만들고 출력하는 방법을 익혀봅시다.

var HEIGHT = 5;
var WIDTH = 5;
var num = 0;

var arr = [];
for(var i=0; i<HEIGHT; i++){
  arr[i] = [];
  num = num+1;
  for(var j=0; j<WIDTH; j++){
    arr[i][j] = num;
  }
}

arr 배열을 선언하고, 첫번째 반복문을 사용해 arr[0](i=0)부터 arr[4](i<HEIGHT, HEIGHT은 5)까지 새로운 배열을 넣어줍니다. 새로운 배열에 다시 반복문으로 0부터 4까지 돌면서 자신의 줄번호 값을 주었습니다.

이 값을 텍스트게임메이커로 출력하는 코드는 다음과 같습니다.

for(var i=0; i<HEIGHT; i++){
  for(var j=0; j<WIDTH; j++){
    TMS.insertText(arr[i][j]);
  }
  TMS.insertText("\n\r");
}

아래와 같이 값이 출력됩니다.

11111
22222
33333
44444
55555

5*5 배열이 자신의 줄번호에 맞게 출력하는 것을 볼 수 있습니다. 하지만 1부터 25까지 숫자를 넣으려면 각 글자 사이에 간격을 좀 주면 좋겠지요. 아래와 같이 바꾸어 봅시다.

for(var i=0; i<HEIGHT; i++){
  for(var j=0; j<WIDTH; j++){
    TMS.insertText(arr[i][j].toString().padStart(3," "));
  }
  TMS.insertText("\n\r");
}
  1  1  1  1  1
  2  2  2  2  2
  3  3  3  3  3
  4  4  4  4  4
  5  5  5  5  5

바뀐 부분(arr[i][j].toString().padStart(3," "))을 좀 살펴봅시다. **이부분은 텍스트게임메이커가 사용된 부분이 아닙니다. 텍스트게임메이커 함수들은 TMS., TMI., TMD.로 시작합니다.

arr[i][j].toString()으로 현재 숫자 타입인 값을 문자타입으로 바꾸어 줍니다. padStart 함수는 문자타입에서만 사용가능하기 때문에 타입변환을 해주는 것입니다.

padStart함수는 padStart(길이, 빈칸을_채울_문자열)로 사용되며, 현재 arr[i][j].toString().padStart(3," ")이므로 강제로 문자열의 길이를 3칸으로 하고, 빈칸은 " "으로 채우고 있는 것입니다.

위 두 부분의 코드를 하나로 묶으면 다음과 같이 되겠습니다.
var HEIGHT = 5;
var WIDTH = 5;
var num = 0;

//2차원배열 생성및 값 넣기
var arr = [];
for(var i=0; i<HEIGHT; i++){
  arr[i] = [];
  num = num+1;
  for(var j=0; j<WIDTH; j++){
    arr[i][j] = num;
  }
}

//출력
TMS.clearScreen();
for(var i=0; i<HEIGHT; i++){
  for(var j=0; j<WIDTH; j++){
    TMS.insertText(arr[i][j].toString().padStart(3," "));
  }
  TMS.insertText("\n\r");
}

진짜 연습문제1

자, 위 코드를 바탕으로 아래와 같이 값이 출력되는 2차원 배열을 작성해 봅시다. "//2차원배열 생성및 값 넣기" 부분의 코드만 조금 수정하면 됩니다.


자신의 코드에서 WIDTH, HEIGHT를 다른 값으로 치환해도 잘 작동하는지 반드시 확인합시다.

댓글

댓글쓰기

이 글에 댓글을 다시려면 SNS 계정으로 로그인하세요. 자세히 알아보기

UP