누적 코드

Jan 28, 2024
누적 코드

1. 누적 코드

notion image
💡
누적 코드 : 누적하기 위해선 자기 값에 새로운 값을 더해서 넣어야한다!
💡
값은 우변부터 읽기 때문에 count는 자기가 누군지 아직 모른다. 그래서 count는 위에 선언을 해줘야함.
 
notion image
  • 만약, count 값을 반복문 안에 선언하게 되면, count가 0으로 초기화된 채 계속 돌게 된다.
    • 영원히 0값만 지니게 됨.
 
notion image
  • 그래서 반복문에 포함시키지 않고 위에 선언해줬다.
 
문제 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);
 

 
notion image
notion image
💡
결과가 첫번째는 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

codingb