
이차원 배열의 값을 입력받아 각 행, 열의 길이를 구한다
5
10 13 10 12 15
12 39 30 23 11
11 25 50 53 15
19 27 29 37 27
19 13 30 13 19
public class reMain09 {
public static int solution(int n, int[][] arr) {
int answer = Integer.MIN_VALUE;
int sum1, sum2;
for (int i=0; i<n; i++){
sum1 = 0 ; sum2 = 0; //j가 다시 0으로 돌아가서 처음부터 순환
for (int j=0; j<n; j++){
sum1 += arr[i][j]; // i고정 j순환 = 행의합
sum2 += arr[j][i]; // j고정 i순환 = 열의합
System.out.print("행"+ arr[j][i]+ " ");
System.out.print("열"+arr[j][i]+ " ");
}
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int [][]arr = new int[n][n];
for (int i=0; i<n; i++){
for (int j=0; j<n; j++){
arr[i][j] = sc.nextInt();
}
}
System.out.println(solution(n, arr));
}
}
헷갈렸던 점
- 행 , 열, i , j 가 자꾸 헷갈렸다
- 행은 일차원 배열을 가르키는 참조변수라는 것을 잊지말자
- i와 j는 단순히 값을 돌리는 변수일 뿐이다
1. i 는 1 증가할때 j 는 전체를 돈다
2. 행은 가로 행으로 가로의 자리들을 가르킨다
열은 세로 열로 세로 자리들을 가르킨다
3. 행과 열은 움직일수 없는 자리라고 생각하고 여기에 사람인 i 와 j 만 바뀌는 것이다.
4. 따라서 행의 합은 가로 자리에 i 하나가 올때 세로 자리는 j가 계속 순환한다
열의 합은 세로 자리에 i 하나가 올때 가로 자리의 j가 계속 순환한다

- 여담
처음에는 한번 보고 아 이런거구나 바로 이해가 됐는데
코드를 다시 짜보면서 이중 for문의 특성과 행, 열의 특성이 뒤죽박죽 되면서 헷갈리기 시작했다. 머리 나쁘다는걸 느낄 때마다 현타가 오는듯 하하하