TIL(Today I Learned)_230721

Aspyn Choiยท2023๋…„ 7์›” 21์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
8/37

โ˜๐Ÿป์˜ค๋Š˜ ๋ฐฐ์šด ๊ฒƒ

1. 2์ฐจ์› ๋ฐฐ์—ด

- 2์ฐจ์› ๋ฐฐ์—ด์ด๋ž€?

-์ž๋ฃŒํ˜•์ด ๊ฐ™์€ 1์ฐจ์› ๋ฐฐ์—ด์„ ๋ฌถ์Œ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ
-1์ฐจ์› ๋ฐฐ์—ด์—์„œ ํ–‰, ์—ด ๊ฐœ๋…์ด ์ถ”๊ฐ€๋œ ๊ฒƒ

- ๋ฐฐ์—ด ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”

  1. ์„ ์–ธ๋ฐฉ์‹
    ์ž๋ฃŒํ˜•[][] ๋ฐฐ์—ด๋ช…;
    ์ž๋ฃŒํ˜• ๋ฐฐ์—ด๋ช…[][];
    ์ž๋ฃŒํ˜•[] ๋ฐฐ์—ด๋ช…[];

  2. ๋ฐฐ์—ด ํ• ๋‹น
    ์ž๋ฃŒํ˜•[][] ๋ฐฐ์—ด๋ช… = new ์ž๋ฃŒํ˜•[ํ–‰ํฌ๊ธฐ][์—ดํฌ๊ธฐ];
    ์ž๋ฃŒํ˜• ๋ฐฐ์—ด๋ช…[][] = new ์ž๋ฃŒํ˜•[ํ–‰ํฌ๊ธฐ][์—ดํฌ๊ธฐ];
    ์ž๋ฃŒํ˜•[] ๋ฐฐ์—ด๋ช…[] = new ์ž๋ฃŒํ˜•[ํ–‰ํฌ๊ธฐ][์—ดํฌ๊ธฐ];

  3. 2์ฐจ์› ๋ฐฐ์—ด์˜ ๊ตฌ์กฐ
    : 1์ฐจ์› ๋ฐฐ์—ด์€ ๋ณ€์ˆ˜๋ฅผ ๋ฌถ์Œ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ
    : 2์ฐจ์› ๋ฐฐ์—ด์€ 1์ฐจ์› ๋ฐฐ์—ด์„ ๋ฌถ์Œ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ

  4. ์ดˆ๊ธฐํ™”์‹œํ‚ค๊ธฐ
    1) ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•œ ์ดˆ๊ธฐํ™”
    ex) arr[0][0] = 1;
    arr[1][1] = 2;
    2) for๋ฌธ์„ ์ด์šฉํ•œ ์ดˆ๊ธฐํ™”
    ex)

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

3) ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”
ex) int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}};
int[][] arr = new int[][] {{1, 2, 3, 4}, {5, 6, 7, 8}};
String fruit[][] = {{"์‚ฌ๊ณผ", "๋”ธ๊ธฐ", "์„๋ฅ˜"}, {"๋ฐ”๋‚˜๋‚˜", "์ฐธ์™ธ", "๋ ˆ๋ชฌ"}};

- 2์ฐจ์› ๋ฐฐ์—ด ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

public class Array2Example {
	
	// 2์ฐจ์› ๋ฐฐ์—ด ๋ฐ ์„ ์–ธ
	public void ex1() {
		
		// 2์ฐจ์› ๋ฐฐ์—ด ์„ ์–ธ
		int[][] arr; 
		// int 2์ฐจ์› ๋ฐฐ์—ด์„ ์ฐธ์กฐํ•˜๋Š” ์ฐธ์กฐ๋ณ€์ˆ˜ ์„ ์–ธ
		// ์ฐธ์กฐํ˜• == ์ฐธ์กฐ ๋ณ€์ˆ˜ == ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜ == ๋ ˆํผ๋Ÿฐ์Šค
		
		// 2์ฐจ์› ๋ฐฐ์—ด ํ• ๋‹น
		// -> new ์ž๋ฃŒํ˜•[ํ–‰ํฌ๊ธฐ][์—ดํฌ๊ธฐ]
		arr = new int[2][3];
		// heap ์˜์—ญ์— int 2์ฐจ์› ๋ฐฐ์—ด 2ํ–‰ 3์—ด ๊ณต๊ฐ„์„ ํ• ๋‹น
		
		// 2์ฐจ์› ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”
		// 1) ํ–‰, ์—ด ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด์„œ ์ง์ ‘ ์ดˆ๊ธฐํ™”
		/*
		arr [0][0] = 10;
		arr [0][1] = 20;
		arr [0][2] = 30;
		
		arr [1][0] = 40;
		arr [1][1] = 50;
		arr [1][2] = 60;
		*/
		
		// 2) 2์ค‘ for๋ฌธ์„ ์ด์šฉํ•œ ์ดˆ๊ธฐํ™”
		int num = 10; // ๋ฐฐ์—ด ์š”์†Œ ์ดˆ๊ธฐํ™”์— ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜
		
		// * ๋ฐฐ์—ด ๊ธธ์ด
		// -> ๋ฐฐ์—ด๋ช….length๋Š” ๋ณ€์ˆ˜๊ฐ€ ์ง์ ‘ ์ฐธ์กฐํ•˜๊ณ ์žˆ๋Š” ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜
		
		System.out.println(arr.length); // 2 (ํ–‰๊ธธ์ด)
		// arr์ด ์ฐธ์กฐํ•˜๊ณ ์žˆ๋Š” 2์ฐจ์› ๋ฐฐ์—ด์˜ ํ–‰์˜ ๊ธธ์ด์ด๋‹ค.
		System.out.println(arr[0].length); // 3 (์—ด๊ธธ์ด)
		// arr์˜ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค ํ–‰์ด ์ฐธ์กฐํ•˜๊ณ ์žˆ๋Š” 1์ฐจ์› ๋ฐฐ์—ด์˜ ์—ด์˜ ๊ธธ์ด์ด๋‹ค.
		System.out.println(arr[1].length); // 3 (์—ด๊ธธ์ด)
		// arr์˜ 1๋ฒˆ์งธ ์ธ๋ฑ์Šค ํ–‰์ด ์ฐธ์กฐํ•˜๊ณ ์žˆ๋Š” 1์ฐจ์› ๋ฐฐ์—ด์˜ ์—ด์˜ ๊ธธ์ด์ด๋‹ค.

		for(int row = 0; row < arr.length; row++) { // ํ–‰ ๋ฐ˜๋ณต (0, 1)
			
			for(int col = 0; col < arr[row].length; col++) {
				
				arr[row][col] = num;
				num += 10;
			}
		}
		
		// Arrays.toString(๋ฐฐ์—ด๋ช…) : ์ฐธ์กฐํ•˜๊ณ ์žˆ๋Š” 1์ฐจ์› ๋ฐฐ์—ด ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
		System.out.println(Arrays.toString(arr));
		
		// Arrays.deepToString(๋ฐฐ์—ด๋ช…) : 
		// ์ฐธ์กฐํ•˜๊ณ ์žˆ๋Š” ๋ชจ๋“  ๋ฐฐ์—ด์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์˜ค๋Š” ๋ถ€๋ถ„๊นŒ์ง€ ํŒŒ๊ณ ๋“ค์–ด๊ฐ€์„œ ๋ชจ๋“  ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
		System.out.println(Arrays.deepToString(arr));
		
		// 3) 
		
	}

	// 2์ฐจ์› ๋ฐฐ์—ด ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”
	public void ex2() {
		// 3ํ–‰ 3์—ด์งœ๋ฆฌ ์ •์ˆ˜ํ˜• 2์ฐจ์›๋ฐฐ์—ด ์„ ์–ธ/์ดˆ๊ธฐํ™”(1~9) ๋™์‹œ
		
		int[][] arr = {{1, 2, 3}, 
				   	   {4, 5, 6}, 
					   {7, 8, 9}};
		
		
		// ํ–‰ ๋ณ„๋กœ ํ•ฉ ์ถœ๋ ฅ
		
		for(int row = 0; row < arr.length; row++) {
			int sum = 0;
			
			for(int col = 0; col < arr[row].length; col++) {
				sum += arr[row][col];
			}
			
			System.out.println(row + "ํ–‰์˜ ํ•ฉ : " + sum);
		}
		
		System.out.println("========================");
		
		// ์—ด ๋ณ„๋กœ ํ•ฉ ์ถœ๋ ฅ
		// 0์—ด์˜ ํ•ฉ : 12
		// 1์—ด์˜ ํ•ฉ : 15
		// 2์—ด์˜ ํ•ฉ : 18
		
		for(int col = 0; col < arr[0].length; col++) {
			int sum = 0;
			
			for(int row = 0; row < arr.length; row++) {
				sum += arr[row][col];
			}
			
			System.out.println(col + "์—ด์˜ ํ•ฉ : " + sum);
		}
		
		System.out.println("========================");

		// ์ „์ฒด ํ•ฉ ์ถœ๋ ฅ
		// ์ „์ฒด ํ•ฉ : 45
		int total = 0;
		for(int row = 0; row < arr.length; row++) {
			
			
			for(int col = 0; col < arr[row].length; col++) {
				
				total += arr[row][col];
			}
		}
		
		System.out.println("์ „์ฒด ํ•ฉ : " + total);
	}

   

2. ๊ฐ€๋ณ€ ๋ฐฐ์—ด

- ๊ฐ€๋ณ€ ๋ฐฐ์—ด์ด๋ž€?

2์ฐจ์› ๋ฐฐ์—ด ์ƒ์„ฑ ์‹œ ๋งˆ์ง€๋ง‰ ๋ฐฐ์—ด ์ฐจ์ˆ˜(์—ด)์„ ์ง€์ •ํ•˜์ง€์•Š๊ณ  ๋‚˜์ค‘์— ์„œ๋กœ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ 1์ฐจ์› ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ์ฐธ์กฐํ•˜๋Š” ๋ฐฐ์—ด

- ๊ฐ€๋ณ€ ๋ฐฐ์—ด ํ• ๋‹น

  1. 2์ฐจ์› ๊ฐ€๋ณ€ ๋ฐฐ์—ด
    ์ž๋ฃŒํ˜•[ ][ ] ๋ฐฐ์—ด๋ช… = new ์ž๋ฃŒํ˜•[ํ–‰ํฌ๊ธฐ][ ];

ex) int[][] arr = new int[4][];
arr[0] = new int[3];
arr[1] = new int[4];
arr[2] = new int[5];
arr[3] = new int[2];

- ๊ฐ€๋ณ€ ๋ฐฐ์—ด ๊ตฌ์กฐ

- ๊ฐ€๋ณ€ ๋ฐฐ์—ด ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

	public void ex3() {
		
		char[][] arr = new char[4][]; // char 2์ฐจ์›๋ฐฐ์—ด ์ƒ์„ฑ ์‹œ ํ–‰๋ถ€๋ถ„๋งŒ ์ƒ์„ฑ

		arr[0] = new char[3]; // 0ํ–‰์— 3์—ด์งœ๋ฆฌ 1์ฐจ์› ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ์ฃผ์†Œ๊ฐ’ ์ €์žฅ
		arr[1] = new char[4]; // 1ํ–‰์— 4์—ด์งœ๋ฆฌ 1์ฐจ์› ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ์ฃผ์†Œ๊ฐ’ ์ €์žฅ
		arr[2] = new char[5]; // 2ํ–‰์— 5์—ด์งœ๋ฆฌ 1์ฐจ์› ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ์ฃผ์†Œ๊ฐ’ ์ €์žฅ
		arr[3] = new char[2]; // 3ํ–‰์— 2์—ด์งœ๋ฆฌ 1์ฐจ์› ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ์ฃผ์†Œ๊ฐ’ ์ €์žฅ
		
		char ch = 'a';
		for(int row = 0; row < arr.length; row++) {
			
			for(int col = 0; col < arr[row].length; col++) {
				
				arr[row][col] = ch++;
			}
		}

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

0๊ฐœ์˜ ๋Œ“๊ธ€