더북(TheBook)

정답

for(int i = 0; i < 100; i++) {
    array[i] = i+1; 
}

 

해설

배열에 1~100까지 값을 반복해 넣도록 코드를 작성하는 문제입니다. 이럴 때는 반복문을 사용한다고 설명했습니다. 범위가 정확하게 정해진 일을 수행할 때는 for 반복문을 이용하는 것이 효과적입니다. 5~7행에 for 문을 작성합니다.

 

반복문의 초깃값으로 0을 지정합니다. 배열의 인덱스가 0번부터 시작하기 때문입니다. 조건문에는 반복이 끝나는 조건을 줍니다. 배열의 인덱스는 0부터 시작하기 때문에 배열이 가질 수 있는 인덱스의 값은 ‘배열 크기-1’이라고 생각하면 됩니다. 따라서 조건을 ‘i<100보다 작을 때까지’로 작성합니다

 

배열의 0번 인덱스에는 1을, 1번 인덱스에는 2(…) 99번 인덱스에는 100을 넣어야 합니다. 인덱스도 값도 1씩 증가해야 하니까 배열의 인덱스를 넣는 부분에 for 문에서 선언한 인덱스 변수를 사용하는 것이 효과적이겠죠? 그리고 값은 항상 인덱스보다 1이 큰 값으로 채워주면 되니까 array[index] = index+1;로 작성합니다. 예제에서는 index를 변수 i로 이용하므로 array[i] = i + 1;로 작성합니다.

 

참고로 for 문의 조건에 index<100으로 작성할 수도 있지만, 100이라는 값을 직접 이용하는 것보다는 배열 크기를 리턴해주는 array.lenght를 사용하는 것이 좋습니다. array.length를 사용하면 길이가 다른 배열을 이용할 때 코드를 수정하지 않아도 되기 때문입니다.

 

 

문제 2 array는 길이를 알 수 없는 int형 배열입니다. array에 들어있는 값의 합을 sum에 저장하세요.

힌트: array의 길이는 array.length로 읽어올 수 있습니다.

public class ArrayWithFor {
    public int sum(int[] array) {
        int sum = 0;
        // array는 길이를 알 수 없는 int형 배열입니다.
        // array에는 정수가 들어있다고 가정하고 
        // 이 아래에서 sum에 array의 모든 값을 더하세요.
        ______________________________________
        ______________________________________
        ______________________________________                                         

        // 아래는 결과 평가를 위한 코드입니다. 수정하지 마세요.
            return sum;
        }

        // 아래는 실행을 위한 코드입니다. 수정하지 마세요.
        public static void main(String[] args) {
            int[]testArr = new int[4];
            String str = "";
            int rightResult = 0;
            for(int i=0; i<4; i++) {
                testArr[i] = (int)(Math.random()*100);
                rightResult += testArr[i];
                str+=(testArr[i]+",");
            }
            str=str.substring(0,str.length()-1);

            ArrayWithFor exam = new ArrayWithFor();
            int Answer = exam.sum(testArr);
            
            if (Answer==rightResult) {
                System.out.println("정답입니다.");
            }
            else{
                System.out.println( str+"를 더한 sum의 값이 틀립니다.");
            }
        }}

 

실행결과

정답입니다.

 

정답

for(int i = 0; i < array.length; i++) {
    sum += array[i]; // sum = sum + array[i]와 같은 문장입니다
}

 

해설

이 문제는 array의 길이를 읽어오는 array.length를 사용할 수 있는지 묻는 문제입니다.

 

메서드 안에 들어오는 배열 크기를 알 수 없으므로 배열 크기를 구하는 array.length를 사용해 크기보다 작을 때까지 반복 수행하게 합니다.

 

배열의 모든 값의 합을 구하는 문제이므로 더한 값을 담을 수 있는 변수가 필요합니다. 문제에서 변수 sum을 선언했으므로 sum을 사용해 값을 누적합니다. += 연산자를 이용하면 코드를 짧게 사용할 수 있습니다. 익숙하지 않다면 sum = sum + 1과 같이 사용해도 좋습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.