본문 바로가기

자바 JAVA

2차원 배열을 이용한 예제 풀이 - 자바 기초

  문제) 3행 5열의 배열을 출력예처럼 초기화한 후 형식에 맞추어 출력하는 프로그램(사이의 공백은 3칸으로 하고 각 수는 2칸으로 오른쪽 맞추어 출력) 

출력예) 

 

package sample;

public class Sample
{
	public static void main(String[] args)
	{
		int[][] a = new int[][]{{5, 8, 10, 6, 4},{11, 20, 1, 3, 2},{7, 9, 14, 22, 3}};
		int i, j;

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

			System.out.println();
		}
	}
}

  문제) 3행3열의 배열 두개를 선언하고 입력을 받아 두 배열의 합을 구하여 출력하는 프로그램 ( 입력받는 배열은 a, b로 정의하고 출력은 hap으로 정의해서 출력 

입출력예)

 

package sample;
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{
		Scanner scn = new Scanner(System.in);

		int[][] a = new int[3][3];
		int[][] b = new int[3][3];
		int i, j;

		for( i=0; i<a.length; i++)
		{
			System.out.printf("첫 번째 배열 %d행 : ", i+1);

			for( j=0; j<a.length; j++)
			{
				a[i][j] = scn.nextInt();
			}
		}

		for( i=0; i<b.length; i++)
		{
			System.out.printf("두 번째 배열 %d행 : ", i+1);

			for( j=0; j<b.length; j++)
			{
				b[i][j] = scn.nextInt();
			}
		}

		int[][] hap = new int[3][3];

		for( i=0; i<a.length; i++)
		{
			for( j=0; j<a.length; j++)
			{
				hap[i][j] = a[i][j] + b[i][j];
				System.out.print(hap[i][j]+" ");
			}

			System.out.println();
		}
	}
}

  문제) 학생 3명의 국어, 영어, 수학 점수를 입력받아 학생별 총점과 과목별 합계를 아래와 같이 출력하는 프로그램 (정수 찍을 때는 %4d로 하고 배열은 1개만 선언해서 사용) 

입출력예)

 

package sample;
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{
		Scanner scn = new Scanner(System.in);

		int[][] a = new int[4][4];
		int i, j;

		for( i=0; i<a.length-1; i++)
		{
			System.out.printf("%d번째 학생의 점수 : ", i+1);
			
			for( j=0; j<a[i].length-1; j++)
			{
				a[i][j] = scn.nextInt();
				a[i][a[a.length-1].length-1] += a[i][j];
				a[a.length-1][j] += a[i][j];
				a[a.length-1][a[a.length-1].length-1] += a[i][j];
			}
		}

		System.out.println("\t 국어\t 영어\t 수학\t 총점");

		for( i=0; i<a.length; i++)
		{
			if(i<a.length-1)
			{
				System.out.printf("%d번\t", i+1);
			}
			else
			{
				System.out.print("합계\t");
			}

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

			System.out.println();
		}
	}
}
				

  문제) 파스칼삼각형을 출력하는 프로그램 작성. 파스칼삼각형은 첫번째 줄 첫번째 행은 1로 초기화한후 다음줄부터 바로 위 값과 바로위 왼쪽의 값을 더한 값이 적용됨. (6행6열 배열로 풀이) 

출력예)

 

package sample;

public class Sample
{
	public static void main(String[] args)
	{
		int[][] a = new int[6][6];
		int i, j;

		a[1][1] = 1;

		for( i=2; i<a.length; i++)
		{
			for( j=1; j<=i; j++)
			{
				a[i][j] = a[i-1][j-1] + a[i-1][j];
			}
		}

		for( i=1; i<a.length; i++)
		{
			for( j=1; j<=i; j++)
			{
				System.out.print(a[i][j]);
			}

			System.out.println();
		}
	}
}

  문제) 배열을 만들어 반복문을 이용하여 아래와 같이 저장한 후 출력하는 프로그램 (첫 번째 행은 전부 1로 초기화한후 내거 왼쪽 + 바로 위 값을 더해서 저장 - 배열의 크기 5행 5열) 

출력예)

 

package sample;

public class Sample
{
	public static void main(String[] args)
	{
		int[][] a = new int[5][5];
		int i, j;

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

		for( i=1; i<a.length; i++)
		{
			for( j=0; j<a[i].length; j++)
			{
				if( j==0)
				{
					a[i][j] = a[i-1][j];
				}
				else
				{
					a[i][j] = a[i-1][j] + a[i][j-1];
				}

				System.out.printf("%2d ", a[i][j]);
			}

			System.out.println();
		}
	}
}

  문제) String 2차원 배열을 이용한 단어맞추기 게임 - 영어단어의 뜻을 입력하여 정답이면 정답입니다. 오답이면 틀렸습니다. 정답은 ~입니다 라고 출력하는 프로그램 

입출력예)

 

package sample;
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{
		Scanner scn = new Scanner(System.in);

		String[][] a = new String[][]{{"Chair", "의자"},{"Computer", "컴퓨터"},{"Integer", "정수"}};
		int i;

		for( i=0; i<a.length; i++)
		{
			System.out.printf("Q%d. %s의 뜻은? ", i+1, a[i][0]);

			if(a[i][1].equals(scn.next()))
			{
				System.out.println("정답입니다.\n");
			}
			else
			{
				System.out.printf("틀렸습니다.\n정답은 %s입니다.\n\n", a[i][1]);
			}
		}
	}
}