[JAVA]12일차(2차원 배열/알파벳 출력/Random(난수 처리))

정효진·2021년 7월 29일
1

Developer Study

목록 보기
14/47
post-thumbnail

7월28일(목)

Test081~Test090
과제 Test087,Test088, Test089 -깃헙

◼ 2차원 배열

▪ 5X5 숫자 배열 코드

/*
배열의 배열(다차원 배열)을 활용하여
다음과 같은 데이터를 요소로 취하는 배열(5x5)을 구성하고
그 결과를 출력하는 프로그램을 구현한다.

실행 예)
  1  2  3  4  5
  6  7  8  9 10
 11 12 13 14 15
 16 17 18 19 20
 21 22 23 24 25
 계속하려면 아무 키나 누르세요...
*/

public class hyodii081  
{
	public static void main(String[] args) 
	{
		int[][] arr = new int[5][5];

		int n = 1;
		
		/*----------------------------------------------------------------------
		for (int i=0; i<arr.length; i++)
		{
			for (int j=0; j<arr[i].length; j++)
			{
				arr[i][j] = n;
				System.out.printf("%3d",arr[i][j]);
				n++;
			}System.out.println();
		}
		-------------------------------------------------------------------*/

		for (int i=0; i<arr.length;i++ )
		{
			for (int j=0; j<arr[i].length;j++ )
			{
				arr[i][j] =n;
				n++;
			}
		}

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

▪ 5X5 숫자 배열 코드 설명📝

/*
배열의 배열(다차원 배열)을 활용하여
다음과 같은 데이터를 요소로 취하는 배열(5x5)을 구성하고
그 결과를 출력하는 프로그램을 구현한다.

실행 예)
  1  2  3  4  5
  6  7  8  9 10
 11 12 13 14 15
 16 17 18 19 20
 21 22 23 24 25
 계속하려면 아무 키나 누르세요...
*/

public class Test081
{
	public static void main(String[] args)
	{
		//배열의 배열 선언 및 메모리 할당
		int[][]arr = new int[5][5];

		
		int n = 1;   //1 2 3 4 5 6...22 23 24 25 26
		
		// 배열의 배열을 반복문의 중첩 구문을 활용하여 구조화
		for (int i=0; i<arr.length; i++)           // 웅 -> outer for문 ->         0     1     2     3     4
		{
			for (int j=0; j<arr[i].length; j++)    // 쑝쑝쑝쑝쑝 -> inner for문 -> 01234 01234 01234 01234 01234
			{
				arr[i][j]=n;
				n++;
				System.out.println(+ i + "  "+ j);
			}
		}

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

	}
}
/* 실행결과
0  0
0  1
0  2
0  3
0  4
1  0
1  1
1  2
1  3
1  4
2  0
2  1
2  2
2  3
2  4
3  0
3  1
3  2
3  3
3  4
4  0
4  1
4  2
4  3
4  4
  1  2  3  4  5
  6  7  8  9 10
 11 12 13 14 15
 16 17 18 19 20
 21 22 23 24 25
계속하려면 아무 키나 누르십시오 . . .
*/

▪ 5X5 숫자 배열 코드(1씩커지게 출력)

public class hyodii082
{
	public static void main(String[] args)
	{
		int[][] a = new int[5][5];

		for (int i=0; i<a.length; i++)
		{
			int n = i+1;                   //----check~!!!
			for (int j=0; j<a[i].length;j++ )
			{
				a[i][j] = n;
				n++;
			}
		}

		for (int i=0; i<a.length; i++)
		{
			for (int j=0; j<a.length;j++ )
			{
				System.out.printf("%3d",a[i][j]);
			}System.out.println();
		}

	}
}

▪ 5X5 숫자 배열 코드(1씩커지게 출력) 설명📝

/*
배열의 배열(다차원 배열)을 활용하여
다음과 같은 데이터를 요소로 취하는 배열을 구성하고
그 결과를 출력하는 프로그램을 구현한다.
 
   n
  ↓
   1  2  3  4  5        i=0  -> n이 1부터 시작 -> n+i
   2  3  4  5  6        i=1  -> n이 2부터 시작 -> n+i
   3  4  5  6  7        i=2  -> n이 3부터 시작 -> n+i
   4  5  6  7  8        i=3  -> n이 4부터 시작 -> n+i
   5  6  7  8  9        i=4  -> n이 5부터 시작 -> n+i

   계속하려면 아무키나 누르세요...

   -> 규칙을 찾으면 n은 i+1부터 시작!!
*/
public class Test082
{
	public static void main(String[] args)
	{
		// 배열의 배열 선언 및 메모리 할당
		int[][] arr = new int[5][5];

		
		for (int i=0; i<arr.length; i++)
		{
			int n = i+1;

			System.out.println("웅 "+n);
			for (int j = 0; j<arr[i].length;j++)
			{
				System.out.println("쑝  "+n);
				arr[i][j] = n;
				n++;
			}
		}

		for (int i=0; i<arr.length; i++)
		{
			for (int j=0; j<arr[i].length; j++)
			{
				System.out.printf("%2d",arr[i][j]);
			}System.out.println();
		}
		
	}
}
/*
웅 1
쑝  1
쑝  2
쑝  3
쑝  4
쑝  5
웅 2
쑝  2
쑝  3
쑝  4
쑝  5
쑝  6
웅 3
쑝  3
쑝  4
쑝  5
쑝  6
쑝  7
웅 4
쑝  4
쑝  5
쑝  6
쑝  7
쑝  8
웅 5
쑝  5
쑝  6
쑝  7
쑝  8
쑝  9
 1 2 3 4 5
 2 3 4 5 6
 3 4 5 6 7
 4 5 6 7 8
 5 6 7 8 9
계속하려면 아무 키나 누르십시오 . . .
*/

▪ 5X5 숫자 배열 코드 (5를 0으로 초기화)

public class hyodii083
{
	public static void main(String[] args)
	{
		int[][] arr = new int[5][5];

		for (int i=0; i<arr.length; i++)
		{
			for (int c=i, n=1; n<=5; n++)
			{
				arr[i][c] = n;
				c++;
				
				if (c==5)
				{
					c=0;
				}
			}
		}
		
		
		/* 방법 2
		int n = 1;
		for (int i=0; i<arr.length; i++)
		{
			for (int j=0; j<arr[i].length; j++)
			{
				if(n==6)
				{
					n=1;
				}
				arr[i][j] = n;
				n++;
				System.out.print(n);
			}System.out.println();
			n--;

		}
		*/

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

▪ 5X5 숫자 배열 코드 (5를 0으로 초기화) 설명📝

/*
배열의 배열(다차원 배열)을 활용하여
다음과 같은 데이터를 요소로 취하는 배열을 구성하고
그 결과를 출력하는 프로그램을 구현한다.

 n
  ↓
   1  2  3  4  5        i=0  n=1  0부터 출발 [0][0] ~ [0][4]
   5  1  2  3  4        i=1  n=1  1부터 출발 [1][1] ~ [1][4]  [1][0]
   4  5  1  2  3        i=2  n=1  2부터 출발 [2][2] ~ [2][4]  [2][0]
   3  4  5  1  2        i=3  n=1  3부터 출발 [3][3] ~ [3][4]  [3][0]
   2  3  4  5  1        i=4  n=1  4부터 출발 [4][4] ~ [4][4]  [4][0]

   -> 규칙 : n 이 5일때 0으로 초기화!!

   계속하려면 아무키나 누르세요...
*/

public class Test083
{
	public static void main(String[] args)
	{
		int[][] arr = new int[5][5];

		
		for (int i=0; i<arr.length; i++)    //웅~    0      1                      2          3             4
		{
			for (int c=i,n=1; n<=5; n++)    //쑝~     
			{
				arr[i][c] = n;              // 00 -> 1      11-> 1                22 -> 1     33 -> 1     44 -> 1
											// 01 -> 2	    12-> 2                23 -> 2     34 -> 2     40 -> 2
											// 02 -> 3      13-> 3                24 -> 3     35 -> 3     41 -> 3
											// 03 -> 4      14-> 4                20 -> 4     31 -> 4     42 -> 4
											// 04 -> 5      15-> 5  → 10 -> 5    21 -> 5     32 -> 5     43 -> 5
													     //15는 없으니까!  

				c++;

				if (c==5)
				{
					c=0;
				}
				System.out.print("쑝 " + c);
			}System.out.println();
		}System.out.println();

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

 1 2 3 4 5
 5 1 2 3 4
 4 5 1 2 3
 3 4 5 1 2
 2 3 4 5 1
계속하려면 아무 키나 누르십시오 . . .
*/

▪ 5X4 숫자 배열 코드 (홀수 짝수)

public class hyodii084
{
	public static void main(String[] args)
	{
		int[][] arr = new int[4][5];
		int n = 1;

		for (int i=0; i<5; i++)
		{
			for (int j=0; j<4; j++)
			{
				if (i%2==0)
				{
					arr[j][i] = n;
				}
				else
					arr[3-j][i]=n;
				n++;
			}
		}
		
		for (int i=0; i<arr.length; i++)
		{
			for (int j=0; j<arr[i].length; j++)
			{
				System.out.printf("%3d",arr[i][j]);
			}System.out.println();
		}

	}
}

▪ 5X4 숫자 배열 코드 (홀수 짝수) 설명📝

/*
배열의 배열(다차원 배열)을 활용하여
다음과 같은 데이터를 요소로 취하는 배열을 구성하고
그 결과를 출력하는 프로그램을 구현한다.

 n
  ↓
   1   8   9  16  17       00 01 02 03 04 
   2   7  10  15  18       10 11 12 13 14 
   3   6  11  14  19       20 21 22 23 24 
   4   5  12  13  20       30 31 32 33 34 
    

   -> 규칙 : 짤수 홀수 나눠서 생각

   계속하려면 아무키나 누르세요...
*/

public class Test084
{
	public static void main(String[] args)
	{
		//[함께 푼 풀이]
		int[][] arr = new int[4][5];
		// arr.length -> 4

		int n =1;
	
		for (int i=0; i<5; i++)
		{
			for(int j=0;j<4;j++)
			{
				n++;
				if(i%2==0)
				{	
					arr[j][i]=n;            //00 -> 1       
					                        //10 -> 2
				}                           //20 -> 3
				                            //30 -> 4
				else		
				
				{
					arr[3-j][i]=n;        //(3-0)1 -> 31 -> 5
					                      //(3-1)1 -> 21 -> 6
				}                         //(3-2)1 -> 11 -> 7
			}					          //(3-3)1 -> 01 -> 8
		}                                
	
		/*----------------------------------------------------------------------
		// 배열 선언 및 메모리 할당
		int[][] arr = new int[4][5];
		int n;							//-- 배열에 넣을 수
		int plusEve=1, plusOdd=7;		//-- 짝수, 홀수일 때 각각 증가량

		// 배열 각 요소에 값 담아내기
		for (int i=0; i<4; i++)	
		{ 
			n = i+1;		//각 줄 첫번째에 넣을 수를 초기화

			for (int j=0; j<5; j++)
			{
				if (j==0)
					arr[i][j] = n;
				else if (j%2==0)
				{
					n += plusEve;
					arr[i][j] = n;
				}
				else
				{
					n += plusOdd;
					arr[i][j] = n;
				}
			}

			plusEve += 2;	//각 줄에 따른 증가량 변화 적용
			plusOdd -= 2;
		}
		-------------------------------------------------------------------*/

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

		}
	}
}
/*
   1   8   9  16  17
   2   7  10  15  18
   3   6  11  14  19
   4   5  12  13  20
계속하려면 아무 키나 누르십시오 . . .
*/

---+

▪ 1번 알파벳 배열 코드

public class hyodii085
{
	public static void main(String[] args)
	{
		char[][] arr = new char[5][5];

		char n = 'A';

		/*----------------------------------------------------------------------

		for (int i=0; i<5; i++)
		{
			for (int j=0; j<5; j++)
			{
				arr[4-j][i] = n;
				n++;
			}
		}
		-------------------------------------------------------------------*/


		for (int i=0; i<5; i++)
		{
			for (int j=4; j>=0;j-- )
			{
				arr[j][i] = n;
				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]);
			}System.out.println();
		}
	}
}

▪ 1번 알파벳 배열 코드 설명📝

/*
배열의 배열(다차원 배열)을 활용하여
다음과 같은 데이터를 요소로 취하는 배열을 구성하고
그 결과를 출력하는 프로그램을 구현한다.

실행 예)

  E  J  O  T  Y    00  01  02  03  04              
  D  I  N  S  X    10  11  12  13  14        
  C  H  M  R  W    20  21  22  23  24        
  B  G  L  Q  V    30  31  32  33  34        
  A  F  K  P  U    40  41  42  43  44       
 계속하려면 아무 키나 누르세요...

*/

public class Test085
{
	public static void main(String[] args)
	{
		/*----------------------------------------------------------------------
		char [][] arr = new char[5][5];

		//char n = 65;
		char n = 'A';


		for (int i=0; i<5;i++)
		{
			
			for (int j=0; j<5; j++)
			{
				
				arr[4-j][i]=n; 
				n++;
				
			}
		}
		-------------------------------------------------------------------*/

		//[함께 푼 풀이 : 이번엔 j를 감소시킴]
		char [][] arr = new char[5][5];

		//char n = 65;
		char n = 'A';


		for (int i=0; i<5;i++)
		{
			
			for (int j=4; j>=0; j--)
			{
				arr[j][i]=n++; 
				
			}
		}


		for (int i=0; i<arr.length; i++)
		{
			for (int j=0; j<arr[i].length; j++)
			{
				System.out.printf("%2c",arr[i][j]);
				
			}System.out.println();
		}
	}
}

/*
 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
계속하려면 아무 키나 누르십시오 . . .
*/

▪ 5X5 숫자 누적합 배열 코드

public class hyodii086
{
	public static void main(String[] args)
	{
		int[][] arr = new int[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];
				arr[4][j] += arr[i][j];
				arr[4][4] += arr[i][j];
			}
		}


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

▪ 5X5 숫자 누적합 배열 코드 설명📝

/*
배열의 배열(다차원 배열)을 활용하여
다음과 같은 데이터를 요소로 취하는 배열을 구성하고
그 결과를 출력하는 프로그램을 구현한다.

실행 예)

   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
계속하려면 아무 키나 누르세요...

   1   2   3   4  1
   5   6   7   8  0
   9  10  11  12  0
  13  14  15  16  0
   1   0   0   0  1

 ->  이 구조니까 1들어간 세곳에 식을 누적해야함

*/

public class Test086
{
	public static void main(String[] args)
	{
		int[][] arr = new int[5][5];
		
		//배열의 배열 각 방에 요소 채워넣기
		int n=0;
		for (int i=0; i<4; i++)       //웅~ i = 0 1 2 3
		{
			for (int j=0; j<4; j++)   //쑝~ j = 0 1 2 3
			{
				n++;                  // n -> 1 2 3 4 5 6 .... 16
				arr[i][j] = n;

				arr[i][4] += arr[i][j];
				arr[4][j] += arr[i][j];
				arr[4][4] += arr[i][j];				
			}		

			
		}
		
		//배열의 배열 전체 요소 출력
		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();
		}
	}

}
/*
   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
계속하려면 아무 키나 누르십시오 . . .

*/

◼Random(난수 처리)

▪ 입력받은 난수 중 최대값, 최소값 출력 코드

mport java.util.Scanner;
import java.util.Random;

public class hyodii090
{
	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		int size;
		System.out.print("발생시킬 난수의 갯수 입력 : ");
		size = sc.nextInt();

		int[] arr = new int[size];

		Random rd = new Random();

		for (int i=0; i<size; i++)
			arr[i] = rd.nextInt(100)+1;

		int max, min;

		max=min=arr[0];

		for (int i=1; i<arr.length; i++)
		{
			if(max<arr[i])
				max = arr[i];
			if(min>arr[i])
				min = arr[i];
		}
		

		System.out.println("가장 큰 값 : " + max + "가장 작은 값 " + min);

	}
}
/*
발생시킬 난수의 갯수 입력 : 10
가장 큰 값 : 94가장 작은 값 39
계속하려면 아무 키나 누르십시오 . . .
*/

▪ 입력받은 난수 중 최대값, 최소값 출력 코드 설명📝

import java.util.Scanner;
import java.util.Random;


public class Test090
{
	public static void main(String[] args)
	{
		//Scanner 인스턴스 생성
		Scanner sc = new Scanner(System.in);

		//안내 메세지 출력
		System.out.print("발생시킬 난수의 갯수 입력 :");
		int size = sc.nextInt();

		// size 변수에 담아낸 수 만큰의 배열방 만들기
		// (배열 선언 및 메모리 할당)
		int[] arr = new int[size];

		// 무작위 숫자(난수)를 발생시키기 위해서는
		// 난수 발생 전용 객체가 필요하다.
		// -> 『java.util.random』

		Random rd = new Random();

		// ※Random 클래스의 『nextInt(int n)』메소드
		// 0 ~ 매개변수로 넘겨받은 정수 n-1 까지의 수 중
		// 무작위 정수(난수) 1개를 발생시킨다.
		

		//테스트
		//System.out.println("발생한 난수 : " + rd.nextInt(10));  
		// 0 ~ 9 까지의 무작위 정수 한 개~!!!
		//System.out.println("발생한 난수 : " + rd.nextInt(5)); 
		// 0 ~ 4 까지의 무작위 정수 한 개~!!!

		// 1 ~ 100 까지의 무작위 정수 한 개
		//System.out.println("발생한 난수 : " + rd.nextInt(100)+1); 

		//배열 구성
		for (int i=0; i<size; i++)   //size = 6  ->  0 1 2 3 4 5
			arr[i] = rd.nextInt(100)+1;
		// rd.nextInt(100)     -> 0 ~ 99 까지의 무작위 정수 한 개 발생
		// rd.nextInt(100)+1   -> 1 ~ 100 까지의 무작위 정수 한 개 발생

		//테스트 -> 구성된 배열의 전체 요소 출력
		/*                                          ---- 최종결과 확인 후 주석 처리~!!!
		for (int i=0;i<arr.length ; i++)
			System.out.print(arr[i]+ " ");
			//--==>> 58 99 76 57 65 69 17 74 83 75
			//--==>> 98 69 49 86 7 17 70 87 26 40
			//--==>> 52 55 65 94 45 13 95 76 13 70
		System.out.println();
		*/

		// 가장 큰 값, 가장 작은 값 확인
		int max, min;                    //-- 최대값, 최소값

		max = min = arr[0];

		for (int i=1; i<arr.length; i++)  //0번째값을 비교하면 의미없이 한바퀴도는것 이미0번째 담았고 그다음부터 비교하면됨 
		{
			if(max < arr[i])
				max = arr[i];

			if(min > arr[i])
				min = arr[i];
		}

		// 결과 출력
		System.out.printf("가장 큰 값 : %d, 가장 작은 값 : %d\n",max, min);
	}
}
/* 실행 결과
발생시킬 난수의 갯수 입력 :10
가장 큰 값 : 84, 가장 작은 값 : 21
계속하려면 아무 키나 누르십시오 . . .
*/


/* 실행 결과(주석처리 전)
발생시킬 난수의 갯수 입력 :10
76 77 87 79 22 33 2 100 37 24
가장 큰 값 : 100, 가장 작은 값 : 2
계속하려면 아무 키나 누르십시오 . . .

발생시킬 난수의 갯수 입력 :10
7 35 81 40 79 12 4 89 64 35
가장 큰 값 : 89, 가장 작은 값 : 4
계속하려면 아무 키나 누르십시오 . . .

발생시킬 난수의 갯수 입력 :10
95 68 94 96 3 49 91 96 71 47
가장 큰 값 : 96, 가장 작은 값 : 3
계속하려면 아무 키나 누르십시오 . . .
*/

profile
개발새발

0개의 댓글