[[TableOfContents]] == ì¼ì‹œ == * 오후 12ì‹œ 15분 ~ 12ì‹œ 45분 == ì°¸ê°€ìž == || ìœ ìž¬ë²” || 불참 || || ìµœë‹¤ì¸ || ì°¸ì„ || || ì´ì§€ìˆ˜ || ì°¸ì„ || || 김용준 || 불참 || || ê¹€ì •ë¯¼ || ì°¸ì„ || == 진행 ìƒí™© == * ê¹€ì •ë¯¼ í•™ìš°ì˜ ë°œí‘œ * Javaì˜ ì •ì„ - Chapter 5 === 발표 ë‚´ìš© === * Cì—ì„œì˜ ë°°ì—´ì€ ì„ ì–¸ê³¼ ìƒì„±ì´ ë™ì‹œì— ë˜ë‚˜, Javaì—서는 ì„ ì–¸ê³¼ ìƒì„±ì´ 다름. {{{ int[] arr; : ì„ ì–¸ arr = new int[5]; : ìƒì„± int[] arr = new int[5]; : ì„ ì–¸ê³¼ ìƒì„±, ë™ì‹œì—. ìžë™ìœ¼ë¡œ 0으로 초기화 int[] arr = {1, 2, 3, 4, 5}; ì´ëŸ° 형ì‹ë„ 가능. 단, ì´ ê²½ìš°ì—는 ì„ ì–¸ê³¼ ìƒì„±ì„ ë™ì‹œì— í• ê²½ìš°ì—만. ë¨¼ì € ì„ ì–¸ì„ í–ˆì„ ê²½ìš°ì—는 int[] arr; arr = new int[]{1, 2, 3, 4, 5}; }}} * ìƒì„± 후 í¬ê¸° ë³€ê²½ë„ ê°€ëŠ¥. {{{ int[] arr; arr = new int[3]; arr = new int[5]; → ë¬¸ì œì—†ìŒ. }}} * í•¨ìˆ˜ì˜ returní˜•ì´ ë°°ì—´ì¸ ê²ƒë„ ê°€ëŠ¥. * public static int[] function() {...} * arr.length : ë°°ì—´ì˜ ê¸¸ì´ê°’ì„ return하는 메서드 * ë‹¤ì°¨ì› ë°°ì—´ {{{ ì„ ì–¸ : int[][] arr; ìƒì„± : arr = new int[3][]; → ì—´ì˜ ê¸¸ì´ë¥¼ 비워둘 수 ìžˆìŒ arr[0] = new int[3]; arr[1] = new int[2]; → ê° í–‰ì˜ ë°°ì—´ 길ì´ê°€ ëª¨ë‘ ë‹¬ë¼ë„ ë¨ //ë‹¤ì°¨ì› ë°°ì—´ì—ì„œì˜ length 메서드 arr.length == 3 arr[0].length == 3 arr[1].length == 2 }}} * for-each 구문 {{{ int[] arr = {1, 2, 3, 4, 5}; for (int e : arr) { System.out.print(e); } → ì¶œë ¥ê°’ : 12345 for (int e : arr) { e++; System.out.print(e); } → ì¶œë ¥ê°’ : 23456 //e는 indexê°€ 아니ë¼, arr[index]ì˜ ê°’ì„ ìž ê¹ ë°›ì•„ë†“ëŠ” ì—í• . }}} * arraycopy 메소드 {{{ int[] arr1 = {1, 2, 3}; int[] arr2 = {11, 12, 13, 14}; System.arraycopy (arr1, 0, arr2, 1, 2); → arr2 = {11, 1, 2, 14}; // arr1[0]부터 2ê°œì˜ ê°’ì„, arr2[1]부터 2ê°œì˜ ê°’ìœ¼ë¡œ 복사. }}} * mainí•¨ìˆ˜ì˜ String[] args ?? * command lineì—ì„œ 문ìžì—´ë“¤ì„ ìž…ë ¥ë°›ì„ ìˆ˜ 있ìŒ. {{{ java program abc 123 args[0] == abc args[1] == 123 }}} == ë‹¤ìŒ ì§„í–‰ == * Chapter 6 * ê°ì²´ì§€í–¥ í”„ë¡œê·¸ëž˜ë° 1 * 발표 : [최다ì¸] == ê³¼ì œ == * ìž„ì˜ì˜ n*n í–‰ë ¬ì„ ìž…ë ¥ë°›ì•„ (n+1)*(n+1) í–‰ë ¬ì„ ìƒì„±í•´, (n+1)번째 행과 ì—´ì— ê° í–‰ê³¼ ì—´ì˜ í•©ì„ ê³„ì‚°í•˜ì—¬ ë„£ê³ ì¶œë ¥í•˜ëŠ” í”„ë¡œê·¸ëž¨ì„ ìž‘ì„±í•˜ë¼. * í–‰ë ¬ì˜ í¬ê¸° nì€ ìž…ë ¥ì„ ë°›ìœ¼ë©´ ë” ì‰½ë‹¤. 안 ë°›ê³ ë„ ë§Œë“¤ì–´ë³´ìž. * n*mìœ¼ë¡œë„ ë§Œë“¤ì–´ë³´ìž. {{{ 예시 input 1 2 3 4 5 6 7 8 9 output 1 2 3 6 4 5 6 15 7 8 9 24 12 15 18 45 }}} === ìœ ìž¬ë²” === {{{ package hanjagonghomework; import java.io.*; public class Homework0709 { public static void main(String []ar) throws IOException{ BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.println("í–‰ì˜ ê¸¸ì´ëŠ” 몇입니까?"); int array = 0; array = Integer.parseInt(in.readLine()); System.out.println("ì—´ì˜ ê¸¸ì´ëŠ” 몇입니까?"); int column = 0; column = Integer.parseInt(in.readLine()); int [][] matrix = new int[array+1][column+1]; for(int a=0; a<array; a++){ for(int b=0; b<column; b++){ matrix[a][b]=3*a+4*b+5*a*b+1; } } int sum=0; for(int a=0; a<array; a++){ for(int b=0; b<column; b++){ sum += matrix[a][b]; } matrix[a][column]=sum; sum=0; } sum=0; for(int a=0; a<array; a++){ for(int b=0; b<column; b++){ sum += matrix[b][a]; } matrix[array][a]=sum; sum=0; } for(int a=0; a<array+1; a++){ for(int b=0; b<column+1; b++){ System.out.print(matrix[a][b] + " "); } System.out.println(); } } } ê·¸ëŸ°ë° ì´ê²Œ 행과 ì—´ì´ 1ê°œ ì°¨ì´ë‚˜ë©´ ì •ì‚¬ê°í–‰ë ¬ì´ ì•„ë‹ˆì—¬ë„ ë§Œë“¤ì–´ì§€ì§€ë§Œ 2 ì´ìƒ ì°¨ì´ë‚˜ë©´ 안만들어지네요. 그건 차후 ìˆ˜ì •í•˜ê² ìŠµë‹ˆë‹¤. }}} === ìµœë‹¤ì¸ === {{{ }}} === ì´ì§€ìˆ˜ === {{{ import java.io.*; import java.util.Scanner; public class Jisu { @SuppressWarnings("resource") public static void main(String[] ar) throws IOException{ int[] tempArr = new int[1000]; //ìž…ë ¥ê°’ì„ ì €ìž¥í• ìž„ì‹œ ì¼ì°¨ í–‰ë ¬ int[][] matrix; //ì¼ì°¨ í–‰ë ¬ì„ ë³µì œí• ì´ì°¨ í–‰ë ¬ int i, n; Scanner in = new Scanner(System.in); System.out.println("ê²½ê³ : ìž…ë ¥ë°›ëŠ” 숫ìžì˜ 개수는 ì œê³±ìˆ˜ì´ì–´ì•¼ 합니다."); while(true){ n = 0; for(i=0; i<1000; i++){ System.out.print(i+1 + "번째 ì›ì†Œë¥¼ ìž…ë ¥í•˜ì„¸ìš”(-1ì€ ì¢…ë£Œ). : "); tempArr[i] = in.nextInt(); if(tempArr[i] == -1) break; n++; } if(isSquare(n) == false){ //ì œê³±ìˆ˜ 여부 íŒë‹¨. System.out.println("ìž…ë ¥í•˜ì‹ ìˆ«ìžì˜ 개수가 ì œê³±ìˆ˜ê°€ 아닙니다. 다시 ìž…ë ¥í•´ì£¼ì„¸ìš”"); } else{ break; } } matrix = cloneArray(tempArr, n); //ì¼ì°¨ì›ì˜ ìž„ì‹œ í–‰ë ¬ì„ ì´ì°¨ í–‰ë ¬ë¡œ 복사하여 matrixì— ëŒ€ìž…í•œë‹¤. matrix = sumElementOfArray(matrix); //ì´ì°¨ í–‰ë ¬ì˜ ê° í–‰ê³¼ ì—´ì˜ ì›ì†Œ ê°’ì„ í•©í•œë‹¤. printArray(matrix); //í–‰ë ¬ì„ ì¶œë ¥í•œë‹¤. } public static boolean isSquare(int n){ //ìž…ë ¥ë°›ì€ ìˆ«ìžê°€ ì œê³±ìˆ˜ì¸ì§€ 아닌지 íŒë‹¨í•œë‹¤. int i; for(i=2; i<n; i++){ if(n/i == i || n == 1){ return true; } } return false; } public static int[][] cloneArray(int[] oneDimArr, int arrLength){ int length = (int) Math.pow(arrLength, 0.5); //여기서 0.5 ëŒ€ì‹ 1/2를 ìž…ë ¥í•˜ë©´ 안 ëœë‹¤. 왜지... int[][] twoDimArr = new int[length+1][length+1]; int i, j = 0; for(i = 0; i<length; i++){ System.arraycopy(oneDimArr, j, twoDimArr[i], 0, length); j = j + length; } return twoDimArr; } public static int[][] sumElementOfArray(int [][] arr){ int n = arr[0].length; int i, j; for(i=0; i<n-1; i++){ for(j=0; j<n-1; j++){ arr[i][n-1] += arr[i][j]; arr[n-1][i] += arr[j][i]; } arr[n-1][n-1] += arr[i][n-1]; } return arr; } public static void printArray(int[][] arr){ System.out.println("\nê²°ê³¼ : "); for(int[] row : arr){ for(int col : row){ System.out.printf("%5d", col); } System.out.println(); } } } }}} ì¶œë ¥í˜•íƒœ ìˆ˜ì •, 예외 처리 완료. 다ìŒì€ m*ní˜•íƒœì˜ í–‰ë ¬ 계산입니다. mê³¼ nì„ ë¯¸ë¦¬ ìž…ë ¥ë°›ì§€ ì•Šê³ ì‚¬ìš©ìžê°€ ìž…ë ¥í•˜ëŠ” ì›ì†Œ ê°œìˆ˜ì— ì˜í•´ì„œ ì •í•´ì§€ëŠ” 형태로 하였습니다. {{{ import java.io.*; import java.util.Scanner; public class Jisu{ public static void main(String[] ar)throws IOException{ int[][] matrix = new int[1000][1000]; int i=0, j=0, row=1000, col=1000; int num=0; boolean bool = true; @SuppressWarnings("resource") Scanner in = new Scanner(System.in); //í–‰ë ¬ ìž…ë ¥ë°›ê¸°. 사용ìžê°€ ìž…ë ¥í•˜ëŠ” ì›ì†Œì˜ 개수를 통해 행과 ì—´ì„ ê²°ì •í•œë‹¤. System.out.println("\n í–‰ë ¬ì˜ ì—´ì˜ ê°œìˆ˜ë¶€í„° ê²°ì •í•©ë‹ˆë‹¤. 숫ìžë¥¼ ì›í•˜ëŠ” ë§Œí¼ ìž…ë ¥í•˜ì„¸ìš”(-1ì€ ì¢…ë£Œ).\n"); while(i<row && bool == true){ System.out.println(i+1+"í–‰ "); for(j=0; j<col; j++){ System.out.printf("\t%dì—´ : ", j+1); matrix[i][j] = in.nextInt(); if(matrix[i][j] == -1 && num == 0){ System.out.println("\n ìž…ë ¥í•˜ì‹ ìš”ì†Œê°€ 없습니다. í”„ë¡œê·¸ëž¨ì„ ì¢…ë£Œí•©ë‹ˆë‹¤. "); System.exit(-1); } else if(matrix[i][j] == -1 && col == 1000){ System.out.println("\n ì´ì œ í–‰ë ¬ì˜ í–‰ì˜ ê°œìˆ˜ë¥¼ ê²°ì •í•©ë‹ˆë‹¤.\n " + "ìˆ«ìž ìž…ë ¥ 중단시 가장 ìµœê·¼ì— ìž…ë ¥ì´ ì™„ì„±ëœ í–‰ê¹Œì§€ë§Œ ì €ìž¥ì´ ë©ë‹ˆë‹¤(-1ì€ ì¢…ë£Œ).\n"); col = num; break; } else if(matrix[i][j] == -1){ System.out.println("\n ìž…ë ¥ì´ ì¢…ë£Œë˜ì—ˆìŠµë‹ˆë‹¤."); row = num/col; bool = false; break; } num++; } i++; } System.out.printf(" ìž…ë ¥í•˜ì‹ í–‰ë ¬ì€ %dí–‰ %dì—´ 입니다.\n\n", row, col); System.out.println(" input"); printArray(matrix, row, col); matrix = sumElementOfArray(matrix, row, col); System.out.println(" output"); printArray(matrix, row+1, col+1); } public static int[][] sumElementOfArray(int[][] arr, int row, int col){ int i, n, j; for(n=0; n<col; n++){ //합산하기 ì „ ì „ì— ìž…ë ¥ëë˜ -1 ë“±ì˜ ê°’ìœ¼ë¡œ ì¸í•´ ìƒê¸¸ 수 있는 계산 오류 처리. arr[row][n] = 0; } for(i=0; i<row; i++){ arr[i][col] = 0; //마찬가지로 -1ì— ì˜í•œ 계산 오류를 처리하는 부분. for(j=0; j<col; j++){ arr[i][col] += arr[i][j]; arr[row][j] += arr[i][j]; arr[row][col] += arr[i][j]; } } return arr; } public static void printArray(int[][] arr, int row, int col){ int i, j; for(i=0; i<row; i++){ for(j=0; j<col; j++){ System.out.printf("%5d", arr[i][j]); } System.out.println(); } System.out.println(); } } }}} ë©”ì¸ì„ 좀 ë”럽게 ì§ ê²ƒ 같군요. 죄송합니다. === 김용준 === {{{ import java.util.Scanner; public class _20140709 { public static void main(String[] args) { Scanner scan = new Scanner( System.in ); System.out.print("input n : "); int n = scan.nextInt(); int [][]map = new int[n+1][n+1]; for(int r = 0; r < n;r++){ for(int c = 0; c < n;c++){ map[r][c] = scan.nextInt(); map[r][n] += map[r][c]; map[n][c] += map[r][c]; map[n][n] += map[r][c]; } } System.out.printf("\noutput\n"); for(int r = 0; r <= n;r++){ for(int c = 0; c <= n;c++){ System.out.printf("%3d",map[r][c]); } System.out.println(); } } } }}} === ê¹€ì •ë¯¼ === {{{ }}} == 후기 == * for-each êµ¬ë¬¸ì€ ë‹¤ì°¨ì›ì—ì„œë„ ì‚¬ìš© 가능한지 ê¶ê¸ˆí•˜ë„¤ìš”. ê·¸ë¦¬ê³ ìžë°”ì—ì„œë„ ë‹¤ì°¨ì› ë°°ì—´ì´ C와 ê°™ì´ ì¼ì°¨ì› ë°°ì—´ê³¼ ë©”ëª¨ë¦¬ê°’ì´ ê°™ì€ì§€ë„ ì•Œì•„ë³´ê³ ì‹¶êµ°ìš”. - [ìœ ìž¬ë²”] * for-each를 활용한 2ì°¨ ë°°ì—´ ì¶œë ¥ìž…ë‹ˆë‹¤. - [ì´ì§€ìˆ˜] {{{ int[][] array = new int[][]{{1, 2, 3}, {2, 3, 4}}; for(int[] row : array){ for(int col : row){ System.out.print(col); } } }}} * 아까 ì •ë¯¼ì´ê°€ ë°°ì—´ì„ ì„ ì–¸í•˜ê³ ë‚˜ì„œ ê·¸ í¬ê¸°ë¥¼ 바꾸는 ê²ƒì€ ê´œì°®ë‹¤ê³ í–ˆëŠ”ë°, ê·¸ë ‡ê²Œ í• ê²½ìš° 새로운 í¬ê¸°ì˜ ë°°ì—´ì€ ë¬´ì¡°ê±´ 0으로 초기화가 ë˜ëŠ”êµ°ìš”...ê°’ ë³´ì¡´ì´ ì•ˆ ë˜ë„¤ìš”. {{{ int[] arr = new int[]{1,2,3,4}; arr = new int[3]; for(int n: arr){ System.out.print(n + " "); } }}} ì´ë ‡ê²Œ í• ê²½ìš° {{{ 0 0 0 }}} ì´ë ‡ê²Œ 나와요. - [ì´ì§€ìˆ˜] * newë¼ëŠ” 것 ìžì²´ê°€ 메모리를 í• ë‹¹í•´ì£¼ëŠ”ê±´ë°, arrì— ìƒˆë¡œ new int[]를 해주는 순간 ê¸°ì¡´ì˜ í• ë‹¹ëœ ë©”ëª¨ë¦¬ì™€ ê´€ê³„ì—†ì´ ë‹¤ë¥¸ 메모리가 í• ë‹¹ë˜ëŠ” 거니까 ë¼ê³ 설명하면 ë˜ë ¤ë‚˜? - [최다ì¸] * javaì—서는 ì£¼ì†Œê°’ì„ ë³¼ 수 있는 ë°©ë²•ì´ ì—†ë‚˜ ê¶ê¸ˆí•˜ë„¤ìš”. 주소값 ë³¼ 수 있으면 C언어와 javaì˜ ë°°ì—´ ì°¨ì´ì ì„ êµ¬ë¶„ í• ìˆ˜ 있ì„íƒ ë°ìš”. - [ìœ ìž¬ë²”] * 찾아보니까 가능하다는 ë§ì€ 없습니다. ì¼ë‹¨ì€ javaì—서는 ì£¼ì†Œê°’ì„ ì§ì ‘ ë³¼ 수 ì—†ë‹¤ê³ ìž ì •ì 으로 ê²°ë¡ ì„ ë‚´ë ¸ëŠ”ë° ì •í™•í•œ ë‹µì„ ì•„ì‹œëŠ” ë¶„ì€ ë‹µë³€ 해주세요. - [ìœ ìž¬ë²”] * 방금 ì°¾ì€ ê±´ë° java는 call by reference ê°™ë‹¤ê³ ìƒê°í•˜ê² 지만 call by valueë¼ê³ 합니다... ~~는 ì €ë„ ìž˜ ëª¨ë¥´ê² ë„¤ìš”. ìžì„¸ížˆ ì°¾ê³ ìˆ˜ì •í•˜ë„ë¡ í•˜ê² ìŠµë‹ˆë‹¤.(ì¼ë‹¨ ì§ˆë¬¸ì€ ë˜ì§€ê³ 본다.)~~ - [ìœ ìž¬ë²”] * primitivesë„ objectë„ call by value를 í•œë‹¤ê³ í•©ë‹ˆë‹¤. ì •í™•í•œ í•´ì„ì¸ì§€ëŠ” ëª¨ë¥´ê² ì§€ë§Œ sun사ì—ì„œ pointë¼ëŠ” í‘œí˜„ì„ ìž˜ëª» ì‚¬ìš©í•˜ì˜€ë‹¤ê³ ëœ ê²ƒìœ¼ë¡œ ë´ì„œ javaì˜ í¬ì¸í„°ëŠ” 우리가 Cì—ì„œ ì•Œë˜ í¬ì¸í„°ì™€ 조금 다른 ê²ƒì¸ ê²ƒ 같습니다. ìžë£Œë¥¼ ì°¾ì€ ì‚¬ì´íŠ¸ë¥¼ ëŒ€ì‹ ì˜¬ë¦½ë‹ˆë‹¤. [http://javadude.com/articles/passbyvalue.htm] - [ìœ ìž¬ë²”] * System.out.print(ë°°ì—´ì´ë¦„)하면 ë³¼ 수 있답니다. 그러나 ì´ ê²½ìš°ì—는 ë‘ ë°°ì—´ì„ ì´ë¦„으로 êµ¬ë¶„í• ìˆ˜ ì—†ìžë‚˜ìš”..ë‘˜ì˜ ì£¼ì†Œê°’ì´ ê°™ì€ì§€ë‹¤ë¥¸ì§€ 어떻게 확ì¸í• ê¹Œìš”ã… - [ì´ì§€ìˆ˜] * new 한번 í•˜ê³ printë¡œ ì¶œë ¥ í•˜ê³ ë‹¤ì‹œ newí• ë‹¹í•˜ê³ ì¶œë ¥. - [최다ì¸] * ì•„ 그거 í•´ë´¤ì—ˆëŠ”ë° ì£¼ì†Œê°’ 같게 나오ë”ë¼êµ¬ìš”ã…Žã…Ž - [ì´ì§€ìˆ˜] * ìƒì†ì´ëž€ ê°œë…ì„ ë¯¸ë¦¬ ë´ì„œ 그런지 ì£¼ì†Œê°’ì´ í•„ìš”í•˜ë‹¤ëŠ” ìƒê°ì´ 안 드네요. - [김용준] * ~~잌ㅋㅋ, ì €ê±° 안ë˜ëŠ”êµ°ìš”. 사실 ì €ê±° 잘 ëª¨ë¥´ê³ ì„¤ëª…í•œê±°ë¼.. 죄송요 - [ê¹€ì •ë¯¼]~~ * 지수 ê³¼ì œì½”ë“œê°€ 왜ì´ë¦¬ 길ìŒ? 부담스럽다. - [김용준] * ì§ˆë¬¸ì„ ìž˜ëª»ë´¤ë‹¤ê³ í•©ë‹ˆë‹¤. ê²°êµ ì„¤ëª…ì´ ìž˜ëª»ë¨.. - [ê¹€ì •ë¯¼] * ì´ê²Œ 맞는거 같습니다 - [김용준] {{{int [] a; // ë°°ì—´ì˜ ì„ ì–¸ a=new int[3]; // ë°°ì—´ì˜ ìƒì„± - intí˜•ì˜ ê³µê°„ì„ 3개로 만듬.(JVMì´ ë©”ëª¨ë¦¬ í• ë‹¹) }}} ----- [í•œìžê³µ/시즌3]