[Java] 2차원 배열, 이중 for문

Nam_JU·2022년 8월 6일
0

Java

목록 보기
2/4

이중 배열

  • 크기가 다른 배열을 생성할수도 있다
  • array4는 이차원 배열을 가르키는 참조변수
  • [3]의 0,1,2 는 1차원 배열을 가르킬수있는 참조변수

응용문제

이차원 배열의 값을 입력받아 각 행, 열의 길이를 구한다

  • 입력값
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문의 특성과 행, 열의 특성이 뒤죽박죽 되면서 헷갈리기 시작했다. 머리 나쁘다는걸 느낄 때마다 현타가 오는듯 하하하
profile
개발기록

0개의 댓글