본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q1493 : 2차원 누적 합 배열 만들기 5-2

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1493 2차원 누적 합 배열 만들기 5-2 (자바, JAVA)입니다.

Intro

Question

문제 설명

입력

첫 번째 줄에 배열의 크기 n, m이 공백을 두고 입력된다.
두 번째 줄부터 m개의 데이터가 공백을 두고 n줄로 입력된다.
[입력값의 정의역]
1<= n, m <= 100
-1000 <= k <= 1000

출력

n*m 개의 2차원 누적 합 데이터를 한 줄로 출력한다

예시

  • 입력 :
    3 5
    1 2 3 4 5
    5 4 3 2 1
    1 5 2 4 3
  • 출력 :
    1 3 6 10 15
    6 12 18 24 30
    7 18 26 36 45

Solution (풀이)

  • 풀이 : 메모리 11184, 시간 69
public class Answer1 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        // 숫자를 저장할 배열 선언
        int[][] numbers = new int[n][m];

        // 입력받을 라인 수 만큼 for문 반복
        for (int i=0; i<n; i++) {
            StringTokenizer st1 = new StringTokenizer(br.readLine(), " ");

            // 각 줄에 입력받을 숫자만큼 for문 반복
            for (int j=0; j<m; j++) {
                int number = Integer.parseInt(st1.nextToken());
                if (i>0) { // 두 번쨰 줄 부터
                    if (j>0) {    // 열의 index가 0보다 큰 경우
                        numbers[i][j] = numbers[i][j-1] + number + numbers[i-1][j] - numbers[i-1][j-1];
                    } else {
                        numbers[i][j] = numbers[i-1][j] + number;    
                    }                    
                } else {
                    if (j>0) {    // 열의 index가 0보다 큰 경우
                        numbers[i][j] = numbers[i][j-1] + number; 
                    } else {
                        numbers[i][j] = number;    
                    }
                }
            }
        }

        for (int[] i : numbers) {
            for (int j : i) {
                sb.append(j).append(" ");    
            }
            sb.append("\n");
        }
        System.out.println(sb);
        br.close();
    }

}

Ranking(순위)

반응형