(Q) 사용자에게 줄 수와 칸 수를 입력받아 해당하는 크기만큼의 2차원 배열을 생성하고
초기화는 세로 방향으로 하세요
줄 수 3, 칸 수 4.
1 4 7 10
2 5 8 11
3 6 9 12
1) 반복수 i, j로 배열의 위치 array[i][j]를 지정하는 경우
package day08;
import java.util.Scanner;
public class Day08_array2d_Test05_1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 행과 열 입력
int row = sc.nextInt();
int column = sc.nextInt();
// 배열 생성
int[][] array = new int[row][column];
// 배열에 숫자 대입
int count = 1;
for(int j = 0 ; j < column ; j ++) {
for(int i = 0 ; i < row ; i ++) {
array[i][j] = count;
count ++;
}
}
// 배열 출력
for(int i = 0 ; i < array.length ; i ++) {
for(int j = 0 ; j < array[i].length ; j ++) {
System.out.print(array[i][j] + "\t");
}
System.out.println();
}
System.out.println();
}
}
2) 위치 변수 x, y를 직접 만들어 array[x][y]를 지정하는 경우
package day08;
import java.util.Scanner;
public class Day08_array2d_Test05_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 행과 열 입력
int row = sc.nextInt();
int column = sc.nextInt();
// 배열 생성
int[][] array = new int[row][column];
// 배열에 숫자 대입
int x = 0;
int y = 0;
for(int i = 1 ; i <= row * column ; i++) {
array[x][y] = i;
if(x < row - 1) {
x ++;
}
else {
x = 0;
y ++;
}
}
// 배열 출력
for(int i = 0 ; i < array.length ; i ++) {
for(int j = 0 ; j < array[i].length ; j ++) {
System.out.print(array[i][j] + "\t");
}
System.out.println();
}
System.out.println();
}
}
3) 나머지(MOD)를 이용하는 방법
package day08;
import java.util.Scanner;
public class Day08_array2d_Test05_3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 행과 열 입력
int row = sc.nextInt();
int column = sc.nextInt();
// 배열 생성
int[][] array = new int[row][column];
// 배열에 숫자 대입
int count = 1;
for(int j = 0 ; j < column ; j ++) {
for(int i = 0 ; i < row ; i ++) {
if((i * j) % row == 0) { // (i * j)를 3으로 나눈 나머지가 0인 차례에만
array[i][j] = count; // 배열에 count를 대입
count ++; // 대입 후 다음 대입을 위해 count를 증가
}
else if((i * j) % row == 1) { // (i * j)를 3으로 나눈 나머지가 1인 차례에만
array[i][j] = count; // 배열에 count를 대입
count ++; // 대입 후 다음 대입을 위해 count를 증가
}
else if((i * j) % row == 2) { // (i * j)를 3으로 나눈 나머지가 2인 차례에만
array[i][j] = count; // 배열에 count를 대입
count ++; // 대입 후 다음 대입을 위해 count를 증가
}
}
}
// 배열 출력
for(int i = 0 ; i < array.length ; i ++) {
for(int j = 0 ; j < array[i].length ; j ++) {
System.out.print(array[i][j] + "\t");
}
System.out.println();
}
System.out.println();
}
}
- (i * j)는 총 입력 횟수를 의미한다
- 행이 3행(j = 3)까지 도달하면 행을 초기화시킨다(j = 0)
- (i * j)를 3으로 나눈 나머지가 0인 회차에만 해당 array[i][j]에 count값을 입력한다
- (i * j)를 3으로 나눈 나머지가 1인 회차에만 해당 array[i][j]에 count값을 입력한다
- (i * j)를 3으로 나눈 나머지가 2인 회차에만 해당 array[i][j]에 count값을 입력한다
'국비교육 > 국비교육 복습' 카테고리의 다른 글
Day08_array2d_Test07 : 빙고판 만들기 (2차원 배열 + 랜덤 배열) (★) (0) | 2022.08.07 |
---|---|
!Day08_array2d_Test06 : 2차원 배열 (대각 방향 초기화 - 마방진의 원리) (★★★) (0) | 2022.08.07 |
Day08_array2d_Test04 : 2차원 배열에서의 합계 (★) (0) | 2022.08.07 |
Day08_array2d_Test03 : 2차원 배열 생성 (0) | 2022.08.07 |
Day08_array_Test14 : 삽입 정렬 (★★★) (0) | 2022.08.07 |