본문 바로가기

2023.11.21-2024.05.31

1208JAVA -MultiArray03

 package des08;

 

 import java.util.ArrayList;

 import java.util.Arrays;

 import java.util.List;

 

 //3*3배열을 만들어주시고 1~9까지 데이터를 랜덤하게 입력해주세요.

 public class MultiArray03 {

 

  public static void main(String[] args) {

 

*내가한 것*

 int arr[][] = new int[3][3];

 

 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);

 

 

 }

 }

 System.out.println(Arrays.deepToString(arr));

 [[6, 7, 1], [4, 1, 8], [9, 5, 6]]

=> 중복 있음 , 중복없이 만들어야한다.

 

*중복없이 만든 것

 int sam[][] = new int[3][3];

 

 for (int i = 0; i < sam.length; i++) {

 B: for (int j = 0; j < sam[i].length; j++) {

 int temp = (int) (Math.random() * 9 + 1); //중복 검사하기 위해 temp변수 사용

 // 중복검사

 for (int k = 0; k < sam.length; k++) {

 for (int k2 = 0; k2 < sam[i].length; k2++) {

 if (sam[k][k2] == temp) {

//

 // System.out.println(i+ ":" +j+"중복발생 : " + temp);

 j--;

 // break A;

 continue B;

 

 }

 }

 } // 중복검사

 sam[i][j] = temp;

 }

 }

 

 for (int[] is : sam) {

 System.out.println(Arrays.toString(is));

 }

 [5, 2, 3]

 [8, 7, 1]

 [9, 6, 4]

 

도저히 이해할 수 없어서 지선생이 알려준거 퍼왔다.

주어진 코드는 중복 없이 1부터 9까지의 난수를 가진 3x3 크기의 2차원 배열 sam을 생성하는 예제입니다. 코드의 실행 흐름을 간략히 설명하면 다음과 같습니다:

  1. int sam[][] = new int[3][3];: 3x3 크기의 2차원 배열 sam을 생성합니다.
  2. for (int i = 0; i < sam.length; i++) {: 배열의 각 행에 대한 반복문이 시작됩니다.
  3. B: for (int j = 0; j < sam[i].length; j++) {: 현재 행에 대한 두 번째 반복문이 시작됩니다. 이 반복문은 현재 행의 각 열에 대한 난수를 생성하고 중복 여부를 검사합니다.
  4. int temp = (int) (Math.random() * 9 + 1);: 1부터 9 사이의 난수를 생성하고 이를 변수 temp에 저장합니다.
  5. 중복 검사를 위한 이중 반복문:
    • for (int k = 0; k < sam.length; k++) {: 모든 행에 대해 검사합니다.
    • for (int k2 = 0; k2 < sam[i].length; k2++) {: 현재 행의 각 열에 대해 검사합니다.
    • if (sam[k][k2] == temp) { j--; continue B; }: 생성된 난수 temp가 이미 배열에 존재하는 경우, 현재 열에 대한 다시 시도를 위해 j--를 하고 레이블 B로 이동하여 외부 루프에서의 반복을 계속합니다.
  6. sam[i][j] = temp;: 중복이 없는 경우에 난수를 배열에 할당합니다.
  7. 외부 루프를 통해 모든 행과 열에 대한 난수 할당이 완료되면, 배열의 내용을 출력합니다.
  8. for (int[] is : sam) { System.out.println(Arrays.toString(is)); }: 배열 sam의 내용을 출력합니다.

이렇게 하면 3x3 크기의 배열에 중복 없는 난수가 할당되어 출력됩니다.

'2023.11.21-2024.05.31' 카테고리의 다른 글

1208JAVA -While01  (0) 2023.12.08
1208JAVA -MultiArray04  (0) 2023.12.08
1208JAVA -MultiArray02  (0) 2023.12.08
1208JAVA -MultiArray01  (0) 2023.12.08
1208JAVA -Test01  (0) 2023.12.08