[자바스크립트 연습문제] 2차원 배열 '지그재그'로 숫자 채우기 풀이

이 글은 연습문제 풀이입니다. 이전 글에서 연습문제를 풀어 보신 분들만 아래 내용을 확인하시길 바랍니다.






[자바스크립 연습문제] 2차원 배열 '지그재그'로 숫자 채우기 풀이

var ROW_MAX = 5;
var COL_MAX = 5;

//2차원 배열 생성
var arr = [];
for(var i=0; i<ROW_MAX; i++){
  arr[i] = [];
  for(var j=0; j<COL_MAX; j++){
    arr[i][j] = null;
  }
}

//2차원 배열 값 넣기
var num = 0;
for(var i=0; i<ROW_MAX; i++){
  if(i%2==0){ //i를 2로 나눈 값후 나머지값이 0일때 즉, 0이거나 짝수인 경우 
    for(var j=0; j<COL_MAX; j++){
      num = num+1;
      arr[i][j] = num;
    }
  }
  else{
    for(var j=COL_MAX-1; j>=0; j--){
      num = num+1;
      arr[i][j] = num;
    }
  }
}

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

홀수줄은 숫자를 왼쪽부터 오른쪽으로 채우고, 짝수줄은 숫자를 오른쪽부터 왼쪽으로 채우게 됩니다.

하지만 배열상의 줄번호는 0부터 4까지이니까 0, 2, 4번 줄은 왼쪽부터, 1, 3번 줄은 오른쪽부터 숫자를 채워야 하죠. 즉 배열의 줄번호로 보면 반대로 짝수번호줄은 왼쪽부터 오른쪽으로, 홀수번호줄은 오른쪽부터 왼쪽으로 채워야합니다.

짝수줄인지 홀수줄인지를 판별하기 위해 나머지 연산자를 사용하였습니다.

배열의 왼쪽부터 오른쪽으로 숫자를 채우는 코드:

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

순서대로 채우기와 완전히 같은 코드입니다.

배열의 오른쪽부터 왼쪽으로 숫자를 채우는 코드:

    for(var j=COL_MAX-1; j>=0; j--){
      num = num+1;
      arr[i][j] = num;
    }

초기값이 WIDTH-1이고, 조건이 j가 0과 같거나 클 때 후처리는 j를 하나 줄이는 반복문입니다. 처음본다면 좀 헷갈릴 수도 있느나 실전에서 엄청 자주 쓰입니다. 확실하게 익혀둡시다.

  • ROW_MAX, COL_MAX의 값을 바꿔가면서 다양한 사이즈의 2차원 배열에서도 문제없이 작동하는지 확인해 봅시다.
  • 다양한 풀이가 있을 수 있습니다. 다른 정답을 찾으셨다면 댓글에 공유해 보세요

댓글

댓글쓰기

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

UP