안녕하세요. 쵸이킴 입니다.
다차원배열의 '달팽이' 형태를 자바 코딩으로 구현해 보았습니다.
* 특징 : 왼쪽부터 시계방향으로 가운데 25까지 뺑뺑이 도는 형태
( 아래 그림처럼 숫자를 채우면 됩니다)
*솔루션
- 우선 코딩을 먼저 보여드리겠습니다.
class snail {
public static void main(String[] args) {
int[][] snail = new int[5][5];
int print = 5;
int k = 1;
int right = -1;
int bottom = 0;
int top = 1;
for(int i=5; i>0; i--) {
for(int j=0; j<print; j++) {
right += top;
snail[bottom][right] = k;
k++;
}
print--;
for(int j=0; j<print; j++) {
bottom += top;
snail[bottom][right] = k;
k++;
}
top = top * (-1);
}
// 출력
for(int i=0; i<snail.length; i++) {
for(int j=0; j<snail[i].length; j++) {
System.out.printf("%2d ", snail[i][j]);
}
System.out.println();
}
}
}
- 코딩에서 print와 k 변수의 쓰임새는 아래와 같습니다.
- i와 j는 for문 루프를 위한 변수입니다.
- right와 bottom 변수의 쓰임새는 아래와 같습니다.
- top의 쓰임새는 숫자를 채우는 '방향의 반전'을 위한 것입니다.
- 코딩에서 흐름을 보면, 아래와 같이 됩니다. 쨘~!
- 참고로, 이중 for문의 i는 '5세트'의 cycle을 의미합니다.
- 이중 for문의 j는 총 '9번'의 cycle을 돌 수 있도록 설계되었습니다.
이해가 잘 되셨는지 모르겠네요.
문의사항은 댓글로 남겨주세요~!
( 2018. 9월경 작성됨. 블로그 새단장으로 인해 옮김 )
( 옮겼다가, 조금 더 쉽게 보이게 설명하고 싶어서 뜯어 고침! )
참고로 기존에는 아래와 같이 설명했었습니다. 코드만 달랑...
보는 사람도 못알아볼 것 같아서 그림으로 정리해봤다는 ㅋㅋ
ㅡ_ㅡ;;
'개발 > 문제 풀이' 카테고리의 다른 글
[JS] 배열에서 각 숫자의 중복횟수 구하기 (0) | 2020.04.05 |
---|---|
[JAVA] 다차원배열(2차원) 실습 - 4문제 (0) | 2020.04.05 |