1. for (int i = 0; i < 2; i++) {
2. for (int j = 0; j < N; j++) {
3. for (int j2 = 0; j2 < M; j2++) {
4. arr[j][j2] =arr[j][j2]+sc.nextInt();
5. }
6. }
7. }
이차원배열 두개 더하는건데
4번째줄
arr[j][j2] = sc.nextlnt(); 하면 안되는 이유가뭔가요
위에 식은
예를들어[0][0] = [0][0] + 1(내가입력한값)으로 나와서
[0][0] + [0][0]하면 두배열 더한값을 모르지않나요?
[0][0]값을 모르니
--------------------------------------------------------------------------
import java.util.Scanner; public class Main {// 2738번 행렬 덧셈 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int M = sc.nextInt(); int[][] arr = new int[N][M]; for (int i = 0; i < 2; i++) { for (int j = 0; j < N; j++) { for (int j2 = 0; j2 < M; j2++) { arr[j][j2] += sc.nextInt(); } } } for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { System.out.print(arr[i][j] + " "); } System.out.println(); } } }
sc가 뭐임? 넥스트인트는 랜덤제네레이터에서만 봤는데
이차원 배열 두개를 더하는 코드라고 했지만 본문에 있는 배열은 arr 하나밖에 없음.. 이것도 이상함
Scanner sc = new Scanner(System.in) 할때 이름 그냥 제가정한거에요
Arr배열 두개더하는거
본문에 이차원배열은 하나밖에 없잖음 arr이랑 뭐를 더하는거임 사용자입력은 왜받는거임 프로그램의 목표를 모르니 어디가 잘못되었는지도 모르겟슴
풀코드 올렸어요
자바는 배열선언하면 알아서 0으로 초기화되나보네.. 일단 왜 arr[j][j2] = 입력; 이게 왜안되는지 말해주자면 말임
두배열 arr[0][0]+arr[0][0] 계산을 할수가있나요? arr[0][0]값을 모르는데
아잠시 pc로 쓰려고
넵
잘보삼 예를들어서 입력으로 3x3배열이 두번들어옴. 첫번째배열은 [10,20,30], [40,50,60], [70,80,90] 이고, 두번째 배열은 [1000,2000,3000], [4000,5000,6000], [7000,8000,9000] 이라고 가정하겟음. 위 코드대로 돌아간다면 [0,0,0], [0,0,0], [0,0,0]으로 초기화되어있는 배열에 순서대로 0+10, 0+20, 0+30, 0+40, 0+50, 0+60, 0+70, 0+80, 0+90 이렇게 들어갈것임 그리고 j포문과 j2포문이 끝나고 i가 0에서 1이 되면서 이제 두번째 배열의 값을 순서대로 받아올것임. 이때 arr의 상태는 [10, 20, 30], ... 아무튼 첫번째배열과 같은 내용이 되어있는 상태임.
arr[i][j]가 0으로 초기화되나요?
그뒤 이제 두번째 배열의 입력(9개)을 순서대로 받을것임. 이번에는 10+1000, 20+2000, 30+3000, 40+4000, 50+5000, ... 이렇게 우리가 원하던대로 들어갈것임 왜냐면 기존의 arr[j][j2]에다가 더한거니까. 이 포문이 전부 끝나면 arr의 상태는 [1010, 2020, 3030], [4040, 5050, 6060], [7070, 8080, 9090] 일것임 결론은 이게 맞는 풀이라는것임. 이제 왜 arr[j][j2] = 입력; 이게 안되는지도 설명해보겠음. arr[j][j2] = 입력; 이걸루 코드를 바꾼다면 두번째 배열을 입력받을때 기존에 있던 10을 무시하고 1000이 들어갈것이고, 기존의 20을 무시하고 2000이 들어갈 것이고, 기존의 30을 무시하고 3000이
들어갈것임 이건 님이 원하는 코드가 아닌거임
arr[i][j]가 0으로 초기화되는지는 모름.. 님이 올린 풀코드가 올바르게 작동한다고 생각하고 그렇게 판단했는데, 그게 아니라면(에러가 나는 코드였다면) 초반에 2중포문 써서 전부 0으로 초기화시키는 작업이 필요함
이건 문제 답지라 제대로 돌아가요 그러면 초기화가됐다고 보면될까요?
내가 자바 경험이 매우 적고, C의 경우에는 전역변수에 정적배열을 선언하면 전부 0으로 알아서 초기화되기 때문에, 본문의 코드를 보고 "0으로 초기화 하는 코드가 없네. 아~ 자바는 C의 전역변수처럼 알아서 0으로 초기화되나보다" 일케 생각한거임.
저게 답지라면 자바는 알아서 0으로 초기화 되는게 맞는듯
와 감사합니다 ㅠㅠ 이해됐어요