public static void ex01() {
// 2~9단까지 전체 구구단 결과 저장하고 출력하기
// 0 1 2 3 4 5 6 7 8 <--- j
// i
// 0 2 4 6 8 10 12 14 16 18
// 1 3 6 9 12 15 18 21 24 27
// 2 4 8 12 16 20 24 28 32 36
// 3 5 10 15 20 25 30 35 40 45
// 4 6 12 18 24 30 36 42 48 54
// 5 7 14 21 28 35 42 49 56 63
// 6 8 16 24 32 40 48 56 64 72
// 7 9 18 27 36 45 54 63 72 81
int[][] gugudan = new int[8][9];
/*
gugudan[0][0] = 2 * 1;
gugudan[0][1] = 2 * 2;
gugudan[0][2] = 2 * 3;
gugudan[1][0] = 3 * 1;
gugudan[1][1] = 3 * 2;
gugudan[1][2] = 3 * 3;
"----------------------"
gugudan[i][j] = (i + 2) * (j + 1);
*/
for(int i = 0; i < gugudan.length; i++) {
for(int j = 0; j < gugudan[i].length; j++) {
gugudan[i][j] = (i + 2) * (j + 1);
System.out.print(String.format("%4d", gugudan[i][j]));
}
System.out.println();
}
}
public static void ex02() {
// 아파트 출력하기 - 1
// 101호: 3명
// 102호: 4명
// 201호: 2명
// 202호: 2명
// 301호: 4명
// 302호: 6명
// 401호: 3명
// 402호: 5명
// 501호: 4명
// 502호: 4명
int[][] apt = {
{3, 4}, // 101호, 102호
{2, 2}, // 201호, 202호
{4, 6}, // 301호, 302호
{3, 5}, // 401호, 402호
{4, 4} // 501호, 502호
};
// apt[0][0] = 101호 = 3
// apt[0][1] = 102호 = 4
// apt[1][0] = 201호 = 2
// apt[1][1] = 202호 = 2
// ---------------------
// apt[i][j] = ((i + 1) * 100) + (j + 1)
for(int i = 0; i < apt.length; i++) {
for(int j = 0; j < apt[i].length; j++) {
System.out.println(((i + 1) * 100) + (j + 1) + "호: " + apt[i][j] + "명");
}
}
}
public static void ex03() {
// 아파트 출력하기 - 2
// 1층: 7명
// 2층: 4명
// 3층: 10명
// 4층: 8명
// 5층: 8명
int[][] apt = {
{3, 4}, // 1층
{2, 2}, // 2층
{4, 6}, // 3층
{3, 5}, // 4층
{4, 4} // 5층
};
/*
int total = 0;
total = total = apt[0][0];
total = total + apt[0][1];
System.out.println("1층: " + total + "명");
total = 0;
total = total + apt[1][0];
total = total + apt[1][1];
System.out.println("2층: " + total + "명");
*/
for(int i=0; i<apt.length; i++) {
int total = 0;
for(int j=0; j<apt[i].length; j++) {
total = total + apt[i][j]; // total += apt[i][j];
}
System.out.println((i + 1) + "층: " + total + "명");
}
}
public static void ex04() {
// 시간표 출력하기
// 월요일: 국어 윤리 수학 체육
// 화요일: 미술 수학 영어
// 수요일: 사회 한자 수학 국어 영어
// 목요일: 음악 국어 윤리
// 금요일: 수학 영어 체육 과학
String[] weekname = {"월요일", "화요일", "수요일", "목요일", "금요일"};
String[][] timeTable = {
{"국어", "윤리", "수학", "체육"},
{"미술", "수학", "영어"},
{"사회", "한자", "수학", "국어", "영어"},
{"음악", "국어", "윤리"},
{"수학", "영어", "체육", "과학"}
};
for(int i=0; i<timeTable.length; i++) {
System.out.print(weekname[i] + ":");
for(int j=0; j<timeTable[i].length; j++) {
System.out.print(String.format("%3s", timeTable[i][j]));
// %d는 정수에서 쓰는 것, %s는 문자열에서 씀..
}
System.out.println();
}
}
public static void ex05() {
// 2차원 배열 90도 회전하기(배열 a의 90도 회전된 모습을 배열 b에 저장한 뒤, 배열 a가 배열 b를 그대로 가져가기)
// 1 1 1 1 1 0 0 0 0 1
// 0 0 1 0 0 0 0 0 0 1
// 0 0 1 0 0 ---> 1 1 1 1 1
// 0 0 1 0 0 0 0 0 0 1
// 0 0 1 0 0 0 0 0 0 1
// 배열 a의 출력결과
// 00001
// 00001
// 11111
// 00001
// 00001
int[][] a = {
{1, 1, 1, 1, 1},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0},
{0, 0, 1, 0, 0}
};
int[][] b = new int[5][5];
// a --> b
// [0][0] [0][4]
// [0][1] [1][4]
// [0][2] [2][4]
// [0][3] [3][4]
// [0][4] [4][4]
// 두번째 줄
// [1][0] [0][3]
// [1][1] [1][3]
// [1][2] [2][3]
// [1][3] [3][3]
// [1][4] [4][3]
//-----------------------
// [i][j] --> [j][4-i]
for(int i=0; i<a.length; i++) {
for(int j=0; j<a[i].length; j++) {
b[j][4-i] = a[i][j]; // a의 값을 b로 보내라.
}
}
a = b; // b가 90도로 돌고 나서, a값으로 다시 보내주면 누운 T자가 된다. 기존 a값은 메모리 누수.
for(int i=0; i<a.length; i++) {
for(int j=0; j<a[i].length; j++) {
System.out.print(a[i][j]);
}
System.out.println();
}
}
public static void main(String[] args) {
//ex02();
//ex03();
//ex04();
ex05();
}