사실 2차원 배열이란 건 없다!
2차원 배열 (x)
배열의 원소로 배열이 들어간 것 (o)
즉 2차원 배열 -> 배열 안에 배열
3차원 배열 -> 배열 안에 배열 안에 배열
arr[n+1][m+1]
: 배열 arr의 n번째 원소(=배열)에서 m번째 원소 꺼내오기 int[][] arr = {{4, 5, 6}, {7, 8, 9}};
int[] temp = arr[0];
// arr[0]이 의미하는 것 : int배열 {4, 5, 6}
int n = temp[2];
// temp[2]가 의미하는 것 : int배열 {4, 5, 6}의 세번째 data
// 즉 n = temp[2] = arr[0][2]
// int배열을 원소로 가지는 배열 arr에서, 첫 번째 원소(배열)의 세 번째 원소를 꺼낸 것
참고
만약 반복이 4번 이상 나오면 보통 잘못된 풀이법일 가능성이 높음
(우리 수준에서는 보통 4차원 배열까지 갈 필요가 없다💦)
{ {100, 80, 90, 100, 90}, {90, 70, 100, 90, 90}, {80, 80, 90, 70, 100} }
class ArrEx4 {
public static void main(String[] args) {
int[][] scores = new int[][] {{100, 80, 90, 100, 90}, {90, 70, 100, 90, 90}, {80, 80, 90, 70, 100}};
// 학생별 평균 점수
for(int i = 0; i < scores.length; i++) {
// i는 학생번호 (학생수만큼 돌아감)
int sum = 0;
for(int j = 0; j < scores[i].length; j++) {
// j는 과목번호 (과목수만큼 돌아감)
sum += scores[i][j];
}
System.out.println((i + 1) + "번째 학생의 평균은 " + (sum / scores[i].length));
}
// 학생별 평균 점수 (간단한 for문 버전)
int num = 0;
for(int[] student : scores) {
int sum = 0;
for(int score : student) {
sum += score;
}
num++;
System.out.println(num + "번째 학생의 평균은 " + (sum / student.length));
}
System.out.println();
// 각 테스트당 평균 점수
for(int j = 0; j < scores[0].length; j++) {
// j는 과목번호 (과목수만큼 돌아감)
int sum = 0;
for(int i = 0; i < scores.length; i++) {
// i는 학생번호 (학생수만큼 돌아감)
sum += scores[i][j];
}
System.out.println((j + 1) + "번째 시험의 평균은 " + (sum / scores.length));
}
}
}
class ArrEx4 {
public static void average(int[][] scores) {
// 주어진 배열에서 원소별 평균을 구하는 메서드
for(int i : scores) {
int sum = 0;
for(int j : scores[i].length) {
sum += scores[i][j];
}
System.out.println(sum / scores[i].length);
}
}
public static void main(String[] args) {
int[][] scores = new int[][] {{100, 80, 90, 100, 90}, {90, 70, 100, 90, 90}, {80, 80, 90, 70, 100}};
// 학생별 평균 점수
average(scores);
// 학생{과목{}, 과목{}} -> 과목{학생{}, 학생{}} 전환
int[][] newScores = new int[5][3];
for(int i = 0; i < scores.length; i++) {
for(int j = 0; j < scores[i].length; j++) {
newScores[j][i] = scores[i][j];
}
}
// 과목별 평균 점수
average(newScores);
class ArrEx4 {
public static void main(String[] args) {
int[][] arr = {{3, 2, 1},{6, 7},{8, 9, 10, 11}}
}
}
class Book {
String title;
int price;
public Book(String title, int price) {
setTitle(title);
setPrice(price);
}
public String getTitle() {
return title;
}
public int getPrice() {
return price;
}
public void setTitle(String title) {
this.title = title;
}
public void setPrice(int price) {
this.price = price;
}
@Override
public String toString() {
return title + " (" + price + ")";
}
}
class Bookcase {
private String category;
private Book[] books;
public Bookcase(String category, Book... books) {
setCategory(category);
setBooks(books);
}
public String getCategory() {
return category;
}
public Book[] getBooks() {
return books;
}
public void setCategory(String category) {
this.category = category;
}
public void setBooks(Book[] books) {
this.books = books;
}
@Override
public String toString() {
String info = "- category : " + category + "\n- booklist\n";
for(Book temp : books) {
info += "\t" + temp + "\n";
}
return info;
}
}
class Bookstore {
private String name;
private String tel;
private Bookcase[] cases;
public Bookstore(String name, String tel, Bookcase... cases) {
setName(name);
setTel(tel);
setCases(cases);
}
public String getName() {
return name;
}
public String getTel() {
return tel;
}
public Bookcase[] getCases() {
return cases;
}
public void setName(String name) {
this.name = name;
}
public void setTel(String tel) {
this.tel = tel;
}
public void setCases(Bookcase[] cases) {
this.cases = cases;
}
@Override
public String toString() {
String info = "<< " + name + " bookstore >>\n- tel) " + tel + "\n";
for(Bookcase temp : cases) {
info += temp + "\n";
}
return info;
}
}
class ArrEx6 {
public static void main(String[] args) {
Bookcase case1 = new Bookcase(
"IT", new Book("power java", 35000), new Book("ultra java", 38000), new Book("hyper java", 41000)
);
Bookcase case2 = new Bookcase(
"novel", new Book("춘식이는 최고야", 35000), new Book("춘식이는 집순이", 28000), new Book("춘식이는 프렌즈", 39000)
);
Bookstore store = new Bookstore("Green", "051-900-1000", case1, case2);
System.out.println(store);
}
}