현재 선택한 정보처리 과정

정보처리기사 실기 이론 학습

이론 목록으로 돌아가기

분기·반복·배열 추적

변수표에 반복 회차, 조건, 갱신값, 출력값을 한 줄씩 쓴다.

예상 읽기 3

실기 학습 목표

변수표에 반복 회차, 조건, 갱신값, 출력값을 한 줄씩 쓴다.

핵심 이론

if/else는 참인 경로만 실행한다. 일반적인 C·Java switch 문은 break가 없으면 다음 case로 이어질 수 있으며 Java의 화살표 case와는 구별한다.

for는 초기화 → 조건 → 본문 → 갱신 순서다. while은 조건부터, do-while은 본문부터 실행한다. 경계의 <와 <= 차이가 반복 횟수를 바꾼다.

break는 가장 가까운 반복문·switch를 끝내며 continue는 다음 반복으로 이동한다. 중첩 반복에서 내부와 외부 인덱스를 섞지 않는다.

배열 인덱스는 0부터 시작한다. 이차원·가변 길이 배열은 행마다 길이가 다를 수 있다. 갱신 전 값과 갱신 후 값을 나눠 쓰면 누적합·역순·정렬 추적이 쉬워진다.

반복문은 한 바퀴의 실행 순서부터

for(초기식; 조건식; 증감식)은 초기식 한 번 → 조건 확인 → 본문 → 증감식 → 조건 확인 순서다. continue는 현재 본문의 남은 부분을 건너뛰지만 for문의 증감식은 실행한다. break는 가장 가까운 반복문 또는 switch를 끝낸다. 중첩 반복 전체를 무조건 끝내는 명령이 아니다.

배열에서 a[i]는 i번째 저장 칸이다. 길이가 4이면 유효한 인덱스는 0~3이고 i <= 4까지 접근하면 범위를 벗어난다. 반복 중 배열을 바꾸면 다음 반복은 바뀐 배열을 읽는다.

i조건실행누적 s
0i < 40 더함0
1i < 41 더함1
2i < 4continue로 더하기 생략1
3i < 43 더함4
4거짓종료4

이는 s=0; for(i=0;i<4;i++){if(i==2)continue; s+=i;}의 추적이다. 중첩 반복은 바깥 인덱스를 고정한 채 안쪽 표를 끝까지 작성한 다음 바깥 인덱스를 바꾼다. Java 가변 길이 배열에서는 행마다 길이가 다를 수 있으므로 열 조건을 실제 행의 길이와 대조한다.

풀이 예시

다음 C17 프로그램이 표준 출력에 기록하는 내용을 쓰시오. 마지막 줄바꿈의 유무는 답안에서 구별하지 않는다.

C코드 영역 안에서 좌우로 이동할 수 있습니다.
#include <stdio.h>
int main(void) {
    int a[2][3] = {{2, 1, 4}, {3, 5, 2}};
    for (int r = 0; r < 2; r++)
        for (int c = 1; c < 3; c++)
            a[r][c] += a[r][c - 1];
    printf("%d %d\n", a[0][2], a[1][2] - a[0][1]);
    return 0;
}

예시 정답

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
7 7

풀이 과정

각 행을 왼쪽부터 제자리 누적한다. 첫 행은 [2,3,7], 둘째 행은 [3,8,10]이다. 따라서 7과 10-3=7을 출력한다.

답안 점검

위 풀이 예시의 답을 가린 뒤, 핵심 이론의 규칙을 적용해 직접 풀어 보세요. 코드와 계산 문제는 중간값·단위·최종 출력의 순서를, 용어 문제는 지문의 핵심 단서와 답의 의미를 점검하세요. 해설과 다른 부분이 있으면 어느 조건을 놓쳤는지 확인하고 연결된 실기 문제로 다시 연습하세요.