코딩 05. 'ㄹ'모양 배열 만들기

yuriyaam·2021년 1월 6일
0

정보처리기사 준비할 때 알고리즘공부하면서 봤던건데, 1년이 지나니 완전 까먹어버렸다..ㅠㅅ ㅠ
기본적인거라 다시 공부!! 달팽이모양 배열도 도전해야징

🎈 'ㄹ'모양 배열 만들기

int count = 5;
int[][] arr = new int[count][count];

int num = 1;
int col = 0; // 열 인덱스
int x = 1; // + or -

for (int row = 0; row < count; row++) {
	for (int i = 0; i < count; i++) {
		arr[row][col] = num++;
		col = (i != count - 1) ? col+x : col;
	}
	x = -x;
}

// 출력하는 부분
for (int i = 0; i < count; i++) {
	for (j = 0; j < count; j++) {
		System.out.printf("%3d", arr[i][j]);
	}
		System.out.println();
}

열의 인덱스가 계속 플러스되는 것이 아니라, 행에 따라 +/-되는 점을 고려해야 합니다. 여기서 포인트는 변수 x인데, +/-를 위해 한 행이 끝날때마다 -1을 곱해주는 거에요.

변수 x를 열 인덱스 j에 더해주는데, 그러다보면 j가 count보다 커져서 OutOfIndex 에러가 납니다. 따라서 저는 이중 for문의 z가 마지막 차례일 경우에는 더해주지 않도록 조건문을 넣어 풀었습니다.


검색해보니 더 좋은 코드가 있는 것 같아 추가 :-)

int count = 5;
int[][] array = new int[count][count];
int number = 1;
int direction = 1;
int col = -1;

for (int row = 0; row < count; row++) {
	for (int j = 0; j < count; j++) {
		col += direction;
		array[row][col] = number++;
	}
	col += direction;
	direction *= -1;
}

// 출력하는 부분
for (int i = 0; i < 5; i++) {
	for (int j = 0; j < 5; j++) {
		System.out.printf("%3d", array[i][j]);
	}
	System.out.println();
}

[코드 출처는 이곳입니당. 제가 조금 변경했어요!]
[이미지 출처는 이곳입니당ㅎ-ㅎ]

0개의 댓글