Search

배열8_문제01_관리비

대분류
STEP05 배열
소분류
배열8_문제

영상

문제

package 배열8_문제; /* [문제1] 각층별 관리비 합 출력 [정답1] 4400, 7100, 5400 [문제2] 호를 입력하면 관리비 출력 [정답2] 입력 : 202 관리비 출력 : 2000 [문제3] 관리비가 가장 많이 나온 집, 적게 나온 집 출력 [정답3] 가장 많이 나온 집(201), 가장 적게 나온 집(303) [문제4] 호 2개를 입력하면 관리비 교체 (101 , 102) ==> (2100, 1000) [문제5] 관리비 많이 나온순서대로 관리비와 호수 출력 (정렬) */ public class 배열8_문제01_관리비_문제 { public static void main(String[] args) { int[][] apt = { {101, 102, 103}, {201, 202, 203}, {301, 302, 303} }; int[][] pay = { {1000, 2100, 1300}, {4100, 2000, 1000}, {3000, 1600, 800} }; } }
Java
복사

해설

package 배열8_문제; import java.util.Arrays; import java.util.Scanner; /* [문제1] 각층별 관리비 합 출력 [정답1] 4400, 7100, 5400 [문제2] 호를 입력하면 관리비 출력 [정답2] 입력 : 202 관리비 출력 : 2000 [문제3] 관리비가 가장 많이 나온 집, 적게 나온 집 출력 [정답3] 가장 많이 나온 집(201), 가장 적게 나온 집(303) [문제4] 호 2개를 입력하면 관리비 교체 (101 , 102) ==> (2100, 1000) [문제5] 관리비 많이 나온순서대로 관리비와 호수 출력 (정렬) */ public class 배열8_문제01_관리비_정답 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int[][] apt = { {101, 102, 103}, {201, 202, 203}, {301, 302, 303} }; int[][] pay = { {1000, 2100, 1300}, {4100, 2000, 1000}, {3000, 1600, 800} }; // 문제1) /* i = 0 j = 0 total = 0 + 1000 j = 1 total = 1000 + 2100 j = 2 total = 3100 + 1300 totalList[0] = 4400 i = 1 j = 0 total = 0 + 4100 .... */ /* int[] totalList = new int[apt.length]; for(int i=0; i<pay.length; i++) { int total = 0; for(int j=0; j<pay[i].length; j++) { total = total + pay[i][j]; } totalList[i] = total; } System.out.println(Arrays.toString(totalList)); // 문제2) System.out.print("호 입력 : "); int ho = scan.nextInt(); int y = 0; int x = 0; for(int i=0; i<apt.length; i++) { for(int j=0; j<apt[i].length; j++) { if(apt[i][j] == ho) { y = i; x = j; break; } } } System.out.println("y = " + y + ", x = " + x); System.out.println(pay[y][x] + "원"); // 문제3) int maxPay = 0; int maxY = 0; int maxX = 0; int minPay = 4100; int minY = 0; int minX = 0; for(int i=0; i<pay.length; i++) { for(int j=0; j<pay[i].length; j++) { // 최대값 if(maxPay < pay[i][j]) { maxPay = pay[i][j]; maxY = i; maxX = j; } // 최소값 if(minPay > pay[i][j]) { minPay = pay[i][j]; minY = i; minX = j; } } } System.out.printf("최대값 = %d호(%d원)\n", apt[maxY][maxX], maxPay); System.out.printf("최소값 = %d호(%d원)\n", apt[minY][minX], minPay); // 문제4) System.out.print("호1 입력 : "); int ho1 = scan.nextInt(); System.out.print("호2 입력 : "); int ho2 = scan.nextInt(); int ho1Y = 0; int ho1X = 0; int ho2Y = 0; int ho2X = 0; for(int i=0; i<apt.length; i++) { for(int j=0; j<apt[i].length; j++) { if(apt[i][j] == ho1) { ho1Y = i; ho1X = j; } if(apt[i][j] == ho2) { ho2Y = i; ho2X = j; } } } // System.out.println(ho1Y + ", " + ho1X); // System.out.println(ho2Y + ", " + ho2X); int num1 = 1000; int num2 = 2100; int tempNum = num1; num1 = num2; num2 = tempNum; // pay[ho1Y][ho1X] // 1000 // pay[ho2Y][ho2X] // 2100 int temp = pay[ho1Y][ho1X]; // temp = 1000 pay[ho1Y][ho1X] = pay[ho2Y][ho2X]; // 101호 = 2100 pay[ho2Y][ho2X] = temp; // 102호 = 1000 for(int i=0; i<pay.length; i++) { System.out.println(Arrays.toString(pay[i])); } */ // 문제5) /* {1000, 2100, 1300}, {4100, 2000, 1000}, {3000, 1600, 800} */ // 1. pay배열의 길이만큼 1차배열을 생성한 후, // pay배열의 값을 1차배열에 전부 저장한다. int[] payTemp = new int[pay.length * pay.length]; int[] aptTemp = new int[apt.length * apt.length]; int index = 0; for(int i=0; i<pay.length; i++) { for(int j=0; j<pay[i].length; j++) { payTemp[index] = pay[i][j]; aptTemp[index] = apt[i][j]; index += 1; } } System.out.println(Arrays.toString(payTemp)); System.out.println(Arrays.toString(aptTemp)); // 2. 1번에서 생성한 일차배열을 내림차순 정렬한다. for(int i=0; i<payTemp.length; i++) { int max = payTemp[i]; int maxIndex = i; for(int j=i; j<payTemp.length; j++) { if(max < payTemp[j]) { max = payTemp[j]; maxIndex = j; } } int tmp = payTemp[i]; payTemp[i] = payTemp[maxIndex]; payTemp[maxIndex] = tmp; tmp = aptTemp[i]; aptTemp[i] = aptTemp[maxIndex]; aptTemp[maxIndex] = tmp; } System.out.println(Arrays.toString(payTemp)); System.out.println(Arrays.toString(aptTemp)); // 3. 2차배열에 다시 정렬된 값을 저장 index = 0; for(int i=0; i<pay.length; i++) { for(int j=0; j<pay[i].length; j++) { pay[i][j] = payTemp[index]; apt[i][j] = aptTemp[index]; index += 1; } } for(int i=0; i<pay.length; i++) { System.out.println(Arrays.toString(pay[i])); } for(int i=0; i<pay.length; i++) { System.out.println(Arrays.toString(apt[i])); } scan.close(); } }
Java
복사