겉바속촉

2차원 배열 본문

IT일기(하반기)/블록체인

2차원 배열

겉바속촉 2020. 5. 29. 17:54
728x90
반응형

안녕하세요~ 겉바속촉입니다!^^!

이번에는 1차원 배열에 이어서 2차원 배열까지 해보도록 할게요:)

 

1차원 배열은 지난번 포스팅을 참고해주세요!^^!

2020/05/29 - [취업일기/블록체인] - 1차원 배열

 

1차원 배열

안녕하세요~ 겉바속촉입니다!^^! 이번에는 배열을 배워보려고 합니다:) 1차원 배열부터 살펴볼건데요 다음 그림을 참고해주세요/ int[]array1 = new int[4] ----> array 1에다가 4개의 방을 부여해준거에요

2-juhyun-2.tistory.com

 

 

 

우선 2차원 배열은 말그대로 1차원에서 차원하나가 늘어난 2차원입니다.

쉽게 말해서 행과 열 개념이 도입되는 거에요!!

2차원 배열 개념

2차원 배열은 예~~~전에 수학시간에 배웠던 행렬과 비슷합니다:)

요새는 행렬을 안 배운다고 하더라구요??

그래서 아래쪽에 (행,열)을 0행에만 표시해봤어요

 

그럼 이제 2차원배열에 대해서 알아보기 위해

다음과 같은 코드를 작성해볼게요:)

 

저는 2행 3열로 만들어주었구요

각각의 자리에다가 수를 넣어주었습니다.

 

즉 다음과 같은 그림을 상상할 수 있겠죠??

10 20 30
5 40 23

행의 갯수/ 각 행의 열갯수/ 각각의 자리에 있는 데이터/

까지

출력해보도록 하겠습니다!^^!

 

package day0529;

public class Array2Char_11 {
	
	public static void main(String[] args) {
		
		//2차원 배열..행열로 이루어짐
		int [][]arr;
		arr = new int[2][3]; //2행3열로 할당
		
		//1행
		arr[0][0]=10;
		arr[0][1]=20;
		arr[0][2]=30;
		//2행
		arr[1][0]=5;
		arr[1][1]=40;
		arr[1][2]=23;
		
		System.out.println("행의 갯수: "+arr.length);
		
		System.out.println("0행의 열갯수: "+arr[0].length);
		System.out.println("1행의 열갯수: "+arr[1].length);
		
		System.out.println("데이타 출력");
		
		for(int i=0;i<arr.length;i++)
		{
			for(int j=0;j<arr[i].length;j++) //행이 가진 열의 개수만큼
			{
				System.out.println(arr[i][j]+"\t");
			}
		}
	}
	
}

 

 

콘솔창이랑 저 위의 표랑 값이 동일한지 확인해보시면 될 것 같아요:)

동일하게 나왔다면 성공이에요!^^!

 

 

간단한 게임 빙고 만들기

 

1. 3행 3열의 방을 만들어 주기 ---> int [][] pz = new int[3][3];

2. 각각의 방에 1~3을 랜덤으로 넣어주기 ---> pz[i][j] = (int) (Math.random()*3 +1);

3. 출력 코드 작성해주기 ---> for문으로

 

package day0529;

public class Array2CharBingo_12 {
	
	public static void main(String[] args) {
		
		//3행 3열의 빙고판을 생성
		int[][]pz = new int[3][3];
		
		int bingo;
		
		//3행3열의 배열에 1~3사이의 난수를 발생시킨다.
		
			System.out.println("***같은 숫자 나오면 빙고***");
			
			//난수구하기
			for(int i =0; i<pz.length;i++)
			{
				for(int j=0;j<pz[i].length;j++)
				{
					//난수 발생
					pz[i][j]=(int)(Math.random()*3+1);
				}
			}
			
			//출력
			for(int i =0; i<pz.length;i++)
			{
				for(int j=0;j<pz[i].length;j++)
				{
					//난수 발생
					System.out.printf("%4d",pz[i][j]);
				}
				System.out.println();
			}
			
		}
				
	}

 

 

 

 

이제 난이도를 업시켜서

빙고판이 계속 랜덤으로 생성되면서 

빙고 개수가 몇개인지까지 출력될 수 있게 코드를 작성해볼게요:)

 

 

빙고판 만들어지기까지는 위의 과정과 동일합니다. 

1. 3행 3열의 방을 만들어 주기 ---> int [][] pz = new int[3][3];

2. 각각의 방에 1~3을 랜덤으로 넣어주기 ---> pz[i][j] = (int) (Math.random()*3 +1);

3. 출력 코드 작성해주기 ---> for문으로

3. 가로선 비교해주기 ---> pz[i][0]==pz[i][1]&&pz[i][1]==pz[i][2]

4. 세로선 비교해주기 ---> pz[0][i]==pz[1][i]&&pz[1][i]==pz[2][i]

5. 대각선(/) 비교해주기 ---> pz[0][2]==pz[1][1]&&pz[1][1]==pz[2][0]

6. 대각선(\) 비교해주기 ---> pz[0][0]==pz[1][1]&&pz[1][1]==pz[2][2]

package day0529;

import java.util.Scanner;

public class Array2CharBingo_12 {
	
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		//3행 3열의 빙고판을 생성
		int[][]pz = new int[3][3];
		int binggo;
		String ans;
		
		//3행3열의 배열에 1~3사이의 난수를 발생시킨다.
		
		while(true)
		{
			
			System.out.println("***같은 숫자 나오면 빙고***");
			
			//난수구하기
			for(int i =0; i<pz.length;i++)
			{
				for(int j=0;j<pz[i].length;j++)
				{
					//난수 발생
					pz[i][j]=(int)(Math.random()*3+1);
				}
		}
			
			//출력
			for(int i =0; i<pz.length;i++)
			{
				for(int j=0;j<pz[i].length;j++)
				{
					//난수 발생
					System.out.printf("%4d",pz[i][j]);
				}
				System.out.println();
			}
			
			//빙고개수 구하기
			binggo =0;
			
			
			//가로선 비교
			for(int i=0;i<3;i++)
			{
				if(pz[i][0]==pz[i][1]&&pz[i][1]==pz[i][2])
				{
					binggo++;
				}
			}
			
			
			//세로선 비교
			for(int i=0;i<3;i++)
			{
				if(pz[0][i]==pz[1][i]&&pz[1][i]==pz[2][i])
				{
					binggo++;
				}
					
			}
			
			//대각선/비교
			if(pz[0][2]==pz[1][1]&&pz[1][1]==pz[2][0])
				binggo++;
			
			
			//대각선\비교
			if(pz[0][0]==pz[1][1]&&pz[1][1]==pz[2][2])
				binggo++;
			
			System.out.println("빙고: "+binggo+ "개");
			
			
			//break문
			System.out.println("계속(c), 그만(x)");
			ans=sc.nextLine();
			
			if(ans.equalsIgnoreCase("X"))
			{
				System.out.println("게임을 종료합니다");
				break;
			}
			else if(ans.equalsIgnoreCase("c"))
			{
				System.out.println("계속....");
			}
			else
			{
				
				System.out.println("잘못입력...강제종료");
				break;
			}
			
		}
			
			 
		}
				
	}

 

 

 

로또 번호 만들기

 

빙고게임을 만들다 보니 로또번호를 만들었던 게 생각나서

이것저것 연습해볼겸 난이도 높여서 해보려고합니다:)

 

로또 번호 만드는 코드는 지난 번 부분을 참고해주세요:)

 

2020/05/29 - [취업일기/블록체인] - temp순서바꾸기

 

temp순서바꾸기

안녕하세요~ 겉바속촉입니다!^^! 이번에는 temp에 대해서 배워볼게요?! 순서를 바꾼다고 생각하시면 됩니다 아래와 같이 코드를 작성해주시구요!! 그 다음의 그림을 봐주세요:) package day0529; public c

2-juhyun-2.tistory.com

 

거기다 더해서 우리가 로또를 산 금액을 입력하면

그에 맞는 로또가 생성될 수 있도록 코드를 작성할게요

 

ex) 3000 ---> 로또 3줄 생성

     5000 ---> 로또 5줄 생성

package day0529;

import java.util.Scanner;

public class QuizArraySortRandom_13 {
	
	public static void main(String[] args) {
		
		//import
		Scanner sc = new Scanner (System.in);
		
		//변수선언
		int[]lotto = new int[6];
		int don ;
		
		System.out.println("로또 금액을 입력해주세요");
		don = sc.nextInt();
		for(int n=0; n<don*0.001;n++)
		{
			
			for(int i=0;i<lotto.length;i++)
			{
			//1~46번까지의 난수를 발생
			lotto[i] = (int)(Math.random()*45 +1);
			
				//증복체크
				for(int j=0;j<i;j++)
				{
				//조건 은 같은 숫자가 나오면
					if(lotto[i]==lotto[j])
					{
						i--; //같은 번지에 다시 값을 구하기 위해서
						break; //i++로 이동
					
					}
				}
			
			}
			for(int i=0;i<lotto.length-1;i++)
			{
				for(int j=i+1;j<lotto.length;j++)
				{
					if(lotto[i]>lotto[j])
					{
						int temp=lotto[i];
						lotto[i]=lotto[j];
						lotto[j]=temp;
					
					}
				}
			}
		
			System.out.print(n+1 + ":회 " );
			for(int i=0; i<lotto.length;i++)
			{
				System.out.print(lotto[i] + "    ");
			}
			System.out.println();
		
		
		}
	}
	
}
			

728x90
반응형

'IT일기(하반기) > 블록체인' 카테고리의 다른 글

클래스 연습하기  (0) 2020.06.01
클래스와 인스턴스  (0) 2020.06.01
temp순서바꾸기  (0) 2020.05.29
Array로 search연습하기  (0) 2020.05.29
1차원 배열  (0) 2020.05.29