영상
문제
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
복사