본문 바로가기

WIL(What I Learned)

(자바 플레이그라운드) 구구단 이중 for문과 배열을 활용한 중복 제거

나의 코드:

public class Gugudan {
    public static void main(String[] args) {
        int[] result = new int[9];
        for (int i = 0; i < result.length; i++) {
            for (int j = 2; j < 10; j++) {
                result[i] = j * (i + 1);
            }
            
            for (i = 0; i < result.length; i++) {
                System.out.println(result[i]);
            }
        }
    }
}

 

답안 코드:

public class answer {
    public static void main(String[] args) {
        int[] result = new int[9];
        for (int j = 2; j < 10; j++) {
            for (int i = 0; i < result.length; i++) {
                result[i] = j * (i + 1);
            }

            for (int i = 0; i < result.length; i++) {
                System.out.println(result[i]);
            }
        }
    }
}

 

이중 for문(Nested For Loop)에서 바깥 for loop과 안쪽 for loop의 위치만 정확하게 반대이다. 왜 그렇게 된 것일까 생각해보았다. 구구단은 j x i의 형태이다. 즉 j가 먼저 돌고 그 다음에 i가 도는 것이다. 따라서 변수 j가 선언된 for loop 안에 변수 i가 선언된 for loop이 위치하게 되는 구조가 되는 것이 아닌가 한다.