[ 2차원배열 + 랜덤숫자 요소채우기]
( 배열의 index를 랜덤으로 추출 <-- 1~9까지 정수넣기 )
package jun09;
import java.util.Arrays;
import java.util.Iterator;
// 3X3 배열에 1~9 랜덤정수 입력하기 (중복없이)
public class Samsam {
public static void main(String[] args) {
int r1;
int r2;
int[][] arr = new int[3][3];
for (int i = 1; i <= 9; i++) {
r1 = (int) (Math.random() * 3); // 0 1 2
r2 = (int) (Math.random() * 3); // 0 1 2
if (arr[r1][r2] == 0) { // 요소값이 초기값(0)이면
arr[r1][r2] = i; // 1~9 순서대로 넣기
} else { // 요소값이 초기값(0)이 아니면 (이미 채워졌으면)
i--; // 다시 랜덤정수(인덱스)추출 (i에 대한 자리 다시정하기)
}
}
// 출력 1)
for (int[] is : arr) {
for (int r : is) {
System.out.print(r + " ");
}
System.out.println(" ");
}
// 출력 2)
for (int j = 0; j < arr.length; j++) {
for (int j2 = 0; j2 < arr[j].length; j2++) {
System.out.print(arr[j][j2] + " ");
}
System.out.println(" ");
}
}
}
(랜덤으로 1~9까지 채워짐)
8 4 6
9 1 3
7 5 2
8 4 6
9 1 3
7 5 2
( 배열의 요소값을 랜덤으로 추출 --> 각 요소값들 같은지 검토 & 재추출 )
int[][] arr = new int[3][3];
boolean check = false;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = (int) (Math.random() * 9) + 1; // 랜덤정수(요소값)출력
if(i + j != 0) { // 중복검사시작
for (int x = 0; x < arr.length; x++) {
for (int y = 0; y < arr[x].length; y++) {
if(arr[i][j] == arr[x][y] && !(i == x && j == y)) {
check = true;
} // 요소값 같으나, 자리가 다르면 재검사 필요
}
}
if (check) {
j--; // 재검사
check = false;
}
}
}
} // 요소값 같고, 자리도 같으면 탈출!
// 출력
for (int[] is : arr) {
for (int i : is) {
System.out.print(i + " ");
}
System.out.println(" ");
}
(필요한 값들을 1차원배열로 생성 --> 2차원 배열의 요소로 하나씩 넣어줌)
int[] arr = new int[9];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) ( (Math.random() * 9) + 1);
for (int j = 0; j < i; j++) {
if (arr[i] == arr[j]) {
i--;
}
}
}
// System.out.println(Arrays.toString(arr));
// 1~9까지 랜덤정수로(중복x) 이루어진 1차원배열 생성
int num = 0;
int[][] arr2 = new int[3][3];
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2.length; j++) {
arr2[i][j] = arr[num++];
}
}
// 위에서 생성한 1차원배열(arr) 요소값들을
// 2차원배열(arr2)의 요소값으로 하나씩 넣어줌
'국비과정 > JAVA (기초)' 카테고리의 다른 글
20230612 _[7일차]_02. break, continue (0) | 2023.06.12 |
---|---|
20230612 _[7일차]_01. 알고리즘 & break, continue (0) | 2023.06.12 |
20230605 _[3일차]_05. for문 (0) | 2023.06.06 |
20230605 _[3일차]_04. 기본입출력 (0) | 2023.06.06 |
20230605 _[3일차]_03. if문 (0) | 2023.06.06 |