이 글은 연습문제 풀이입니다. 이전 글에서 연습문제를 풀어 보신 분들만 아래 내용을 확인하시길 바랍니다.
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를 하나 줄이는 반복문입니다. 처음본다면 좀 헷갈릴 수도 있느나 실전에서 엄청 자주 쓰입니다. 확실하게 익혀둡시다.
댓글
이 글에 댓글을 다시려면 SNS 계정으로 로그인하세요. 자세히 알아보기