반응형
안녕하세요! 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(순위)
반응형
'Algorithm > CodeUp' 카테고리의 다른 글
[CodeUp_Java] Q1501 : 2차원 배열 채우기 1 (0) | 2022.07.28 |
---|---|
[CodeUp_Java] Q1500 : 2차원 배열에 값 저장하기 (0) | 2022.07.27 |
[CodeUp_Java] Q1492 : 1차원 누적 합 배열 만들기 5-1 (0) | 2022.07.27 |
[CodeUp_Java] Q1478 : 2차원 배열 빗금 채우기 3-3 (0) | 2022.07.27 |
[CodeUp_Java] Q1477 : 2차원 배열 빗금 채우기 3-2 (0) | 2022.07.27 |