정리 노트/쌍용 KDT_(자바 Spring)

23.02.15(수): 2차원 배열, 난수 Random.nextInt()

우주바다 2023. 6. 27. 21:24
728x90

오늘 배운 내용

01. 2차원 배열

02. Random(난수)



01. 2차원 배열

 

실습090 

알파벳을 다음과 같이 출력. ( 배열 구성과 출력문은 별개로 구성)

  E  J  O  T  Y
  D  I  N  S  X
  C  H  M  R  W
  B  G  L  Q  V
  A  F  K  P  U
char[][] arr = new char[5][5];
char ch=65;

for (int i=0;i<5;i++) // 배열에 값 할당
{
	for (int j=0;j<5;j++ )
	{
		arr[4-j][i] =(char)ch;
		ch++;
	}
}
for (int i=0; i<5;i++) // 출력
{
	for (int j=0;j<5 ;j++ )
	System.out.printf("%3c", arr[i][j]);
	System.out.println();
}
// 강사님 코드
char[][] arr = new char[5][5];
char start= 'A';

for (int i=0;i<5 ;i++ ) //01234
{
    for (int j=4;j>=0 ;j-- ) //43210
    {
        arr[j][i] = start++; //65 66 67...
    }
}

//전체 요소 출력
for (int i=0;i<arr.length ;i++ )
{
    for (int j=0;j<arr[i].length ;j++ )
    {
        System.out.printf("%3c", arr[i][j]);
    }
    System.out.println();
}

 실습091 

다음과 같이 숫자 출력 (규칙 찾아서 식 만들기)

   1   2   3   4  10
   5   6   7   8  26
   9  10  11  12  42
  13  14  15  16  58
  28  32  36  40 136
//배열 방 만들기
int [][] arr = new int[5][5]; // 5*5 배열 생성 

// 배열 구성 
int n=0;
for (int i=0;i<4 ;i++ )
{
    for (int j=0;j<4 ;j++ )
    {
        n++;
        arr[i][j] = n;

        arr[i][4] += arr[i][j];// 10 26 42 58
        arr[4][j] += arr[i][j];// 28 32 36 40 
        arr[4][4] += arr[i][j];// 136
    }
}

for (int i=0;i<arr.length ;i++ )
{
    for (int j=0;j<arr[i].length ;j++ )
    {
        System.out.printf("%4d", arr[i][j]);
    }
    System.out.println(); //개행
}

실습092(과제)

/*=================[ 2/ 15 수 ]==================
다차원 배열으로 다음과 같이 구성하고 출력한다.
단, 배열 구성, 출력 코드는 분리한다.

실행 예)				  
  A  B  C  D  E
  F  G  H  I  J
  K  L  M  N  O
  P  Q  R  S  T
  U  V  W  X  Y
================================================*/

char[][] arr = new char[5][5]; // 5*5 배열 생성	
char start = 'A';

/*====== ② 배열 구성 =====*/
for (int i = 0; i < arr.length; i++) // 외부 루프
{
    for (int j = 0; j <arr[i].length; j++) //내부 루프 
        arr[i][j] = start++; // 'A' == 65. 아스키 값을 1씩 증가
}	
/*====== ③ 배열 출력 =====*/
for (int i = 0; i < arr.length; i++) // 외부 루프
{
    for (int j = 0; j <arr[i].length; j++) //내부 루프 
        System.out.printf("%3c", arr[i][j]); // 3만큼의 공간을 두고 출력 
    System.out.println();
}

 

실습093(과제)

char[][] arr = new char[5][5]; // 5*5 배열 생성	
char start = 'A';
int n = 1 ; // 행 출력 제어할 변수 

/*======  배열 구성 =====*/ 
for (int i = 0; i < arr.length; i++) // 0~4행 5회 반복하는 외부 루프
{
    for (int j = 0; j < n; j++)   // 행에 따른 열을 1씩 증가하는 내부 루프 
        arr[i][j] = start++; // 'A' == 65. 아스키 값을 1씩 증가
        n++;
}	
/*======  배열 출력 =====*/
for (int i = 0; i < arr.length; i++) 
{
    for (int j = 0; j <arr[i].length; j++) 
        System.out.printf("%3c", arr[i][j]); // 3만큼의 공간을 두고 출력 
    System.out.println();
}

/*
  A        
  B  C      
  D  E  F    
  G  H  I  J  
  K  L  M  N  O
*/

 

실습094(과제)

코드블록(094)

더보기
char[][] arr = new char[5][5]; // 5*5 배열 생성	
char start = 'A'; 

/*======  배열 구성 =====*/ 
for (int i = 0; i < arr.length; i++) // 5회 외부 루프 
{
    for (int j = 0; j <= i; j++){   // 행에 따른 열을 1씩 증가하는 내부 루프 
                                  // j <= i   (열은 행보다 크지 않음)
        if (i % 2 == 0)			 // 0, 2, 4행일 때   ---------> (정방향) 
            arr[i][j] = start++;   

        else if(i % 2 != 0){		 // 1, 3 행일 때 (역방향) <-------------
            arr[i][i-j] = start++;	 // 진행중인 행(i)값부터 열(j)이 시작되야 함 
           // 행은 i로 고정, 열은 i-j // ex) i가 2이면, 2, 2-0 / 2, 2-1 / 2, 2-2 3번 
        } //  (i+1)만큼 숑숑 실행 . (2, 2) / (2,1) / (2,0 ) == > 열이 역순 출력 
    }		
}	
/*======  배열 출력 =====*/
for (int i = 0; i < arr.length; i++) // 배열 길이만큼 5번 외부 루프
{
    for (int j = 0; j <arr[i].length; j++) // 0번 인덱스의 내부 배열만큼 5번 루프 
        System.out.printf("%3c", arr[i][j]); // 3만큼의 공간을 두고 출력 
    System.out.println();
}  

/*
  A        
  C  B      
  D  E  F    
  J  I  H  G  
  K  L  M  N  O
*/

02. Random.nextInt()

 Random 클래스의 nextInt() 메소드는 
 0 부터 매개변수로 받은 정수 n-1 사이에서 난수를 1개 발생시킨다. 
 rd.nextInt(10);   0부터 9 사이의 난수 1개 발생 

 

실습095

임의의 정수를 사용자 입력받아 그 수만큼 난수(1~100)를 만든다.
난수를 배열에 담고, 그 중 최대값과 최소값을 선택해 출력한다.

실행 예)   
발생시킬 난수의 개수 입력: 10
40 99 2 4 6 23 63 12 34 25 (무작위) (배열에 담기)
>> 가장 큰 값: 99, 가장 작은 값: 2   

import java.util.Scanner;
import java.util.Random; // 난수 발생을 위한 전용 객체 필요(java.util.Random)

public class Test095
{
	public static void main(String[] args) 
	{	
		Scanner sc = new Scanner(System.in);	
		int size;        // 사용자 입력값 
		
		System.out.print("발생시킬 난수의 갯수 입력 :");
		size = sc.nextInt();
		
		// size 변수 값만큼 배열 선언 및 메모리 할당
		int[] arr = new int[size];

		// 랜덤 클래스 기반 인스턴스 생성 
		Random rd = new Random();
	
		// 배열 구성하기 (난수 저장)
		for (int i =0; i < size; i++)
		{	//cf.  rd.nextInt(101);   0부터 100 사이
			arr[i] = rd.nextInt(100) + 1;  // 1부터 100 사이  
		}

		// 배열에서 최소, 최댓값 출력
		int min = arr[0], max = arr[0];  // 최소, 최댓값

		for (int i = 0; i <arr.length; i++)
		{	
			System.out.print(arr[i] + " ");

			if (max < arr[i])
				max = arr[i];
			if (min > arr[i])
				min = arr[i];
		}	
		System.out.printf("\n>> 가장 큰 값: %d, 가장 작은 값: %d\n", max, min);
	}
}

/*

발생시킬 난수의 갯수 입력 :5
46 95 19 69 98
>> 가장 큰 값: 98, 가장 작은 값: 19
계속하려면 아무 키나 누르십시오 . . .

*/

 


+) 번외

강의장에 있는 여러 pc들처럼 같은 네트워크를 공유하는 
pc들 중 유독 하나가 느릴 때. 재부팅하는 이유.

최초로 켠 pc가 이후로 부팅된 컴퓨터들이 네트워크로 편입된 것을
목록으로 가지면서 점점 느려짐. 재부팅 시 다른 pc로 목록이 넘어간다. 

728x90
반응형