1. 누적 코드

누적 코드 : 누적하기 위해선 자기 값에 새로운 값을 더해서 넣어야한다!
값은 우변부터 읽기 때문에 count는 자기가 누군지 아직 모른다.
그래서 count는 위에 선언을 해줘야함.

- 만약, count 값을 반복문 안에 선언하게 되면, count가 0으로 초기화된 채 계속 돌게 된다.
영원히 0값만 지니게 됨.

- 그래서 반복문에 포함시키지 않고 위에 선언해줬다.
문제 1) 문제를 풀어보자
문제 : 극장 안의 관객수 세는 프로그램 만들기.
극장에 앉아있는 관객들을 2차원 배열로 나타내라.
관객이 있는 좌석은 1로, 관객이 없는 좌석은 0으로 나타내라.
총 관객수와 각 행에 있는 관객의 수가 몇 명인지도 나타내라.
package ex03;
public class TheaterSeats {
public static void main(String[] args) {
int[][] seats = {
{0, 0, 0, 1, 1, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 1, 0}
};
int sum = 0;
int[] seat1 = seats[0];
int count = 0;
for (int i = 0; i < seat1.length; i++) {
System.out.println(seat1[i]);
count = count + seat1[i];
}
System.out.println("첫번째 행의 관객수는 : " + count);
sum = sum + count;
int[] seat2 = seats[1];
count = 0;
for (int i = 0; i < seat2.length; i++) {
System.out.println(seat2[i]);
count = count + seat2[i];
}
System.out.println("두번째 행의 관객수는 : " + count);
sum = sum + count;
int[] seat3 = seats[2];
count = 0;
for (int i = 0; i < seat3.length; i++) {
System.out.println(seat3[i]);
count = count + seat3[i];
}
System.out.println("세번째 행의 관객수는 : " + count);
sum = sum + count;
System.out.println("전체 관객수는 : " + sum);
}
}
첫번째 단순화 과정
package ex03;
import java.sql.SQLOutput;
public class TheaterSeats {
public static void main(String[] args) {
int[][] seats = {
{0, 0, 0, 1, 1, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 1, 0}
};
int sum = 0;
int count = 0;
count = 0;
for (int i = 0; i < seats[0].length; i++) {
count = count + seats[0][i];
}
System.out.println("첫번째 행의 관객수는 : " + count);
sum = sum + count;
count = 0;
for (int i = 0; i < seats[1].length; i++) {
count = count + seats[1][i];
}
System.out.println("두번째 행의 관객수는 : " + count);
sum = sum + count;
count = 0;
for (int i = 0; i < seats[2].length; i++) {
count = count + seats[2][i];
}
System.out.println("세번째 행의 관객수는 : " + count);
sum = sum + count;
System.out.println("전체 관객수는 : " + sum);
}
}
두번째 단순화 과정
package ex03;
import java.sql.SQLOutput;
public class TheaterSeats {
public static void main(String[] args) {
int[][] seats = {
{0, 0, 0, 1, 1, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 1, 0},
{1, 1, 0, 0, 0, 0, 1, 1, 1, 0}
};
int sum = 0;
int count = 0;
int row = -1;
row++;
count = 0;
for (int i = 0; i < seats[row].length; i++) {
count = count + seats[row][i];
}
System.out.println(row + "번째 행의 관객수는 : " + count);
sum = sum + count;
row++;
count = 0;
for (int i = 0; i < seats[row].length; i++) {
count = count + seats[row][i];
}
System.out.println(row + "번째 행의 관객수는 : " + count);
sum = sum + count;
row++;
count = 0;
for (int i = 0; i < seats[row].length; i++) {
count = count + seats[row][i];
}
System.out.println(row + "번째 행의 관객수는 : " + count);
sum = sum + count;
row++;
count = 0;
for (int i = 0; i < seats[row].length; i++) {
count = count + seats[row][i];
}
System.out.println(row + "번째 행의 관객수는 : " + count);
sum = sum + count;
System.out.println("전체 관객수는 : " + sum);
}
}
마지막 단순화 과정
package ex03;
public class TheaterSeats {
public static void main(String[] args) {
int[][] seats = {
{0, 0, 0, 1, 1, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 1, 0},
{1, 1, 0, 0, 0, 0, 1, 1, 1, 0}
};
int sum = 0;
int count = 0;
for (int row = 0; row < seats.length; row++) {
count = 0;
for (int i = 0; i < seats[row].length; i++) {
count = count + seats[row][i];
}
System.out.println(row + "번째 행의 관객수는 : " + count);
sum = sum + count;
}
System.out.println("전체 관객수는 : " + sum);


결과가 첫번째는 4 / 두번째는 10이 나온다. 첫번째는 행, 두번째는 열이 나온걸 알 수 잇음
for (int row = 0; row < seats.length; row++) {
count = 0;
for (int i = 0; i < seats[row].length; i++) {
count = count + seats[row][i];
}
그래서 여기에 처음에는 행이 나와야하니까 seats.length를,
두번째는 열이 나와야하니까 seats[row].length로 길이를 사용.
count = count + seats[row][i];
여기서 왜 [row][i] 두개를 썼냐면, 이건 2차원 배열이기 때문. 구구단을 생각하면 이해가 쉽다.
row가 0행을 돌때, i는 열을 9번 도는거니까.
* count = 매 행마다 몇 명이 앉는지 보여주려고 count = 0으로 해서 넣었다.
* sum이 전체 관객수를 나타내는 변수명
코드 덩어리는 모듈이라고 한다.
Share article