[필기·실기] 정보처리기사 C·Java·Python·SQL 실행형 문제 풀이법
한 줄 안내: 코드와 SQL 문제는 머릿속으로 한 번에 계산하지 말고 입력, 중간 상태와 최종 결과를 분리해 추적하세요.
프로그램 문제를 풀기 전 확인할 것
- 언어와 실행 환경을 확인합니다.
- 입력값과 변수의 초기값을 적습니다.
- 조건문이 참이 되는 시점과 반복 횟수를 표시합니다.
- 함수 호출 전후의 인수와 반환값을 구분합니다.
- 출력 형식, 자료형 변환과 연산 순서를 마지막에 확인합니다.
변수 추적표를 만듭니다
실행 단계 / 조건 결과 / 바뀐 변수 / 출력값
모든 변수를 매번 적기보다 실제로 값이 달라지는 변수만 기록합니다. 배열 인덱스, 증감 연산자와 반복문의 시작·종료 조건은 한 줄씩 따로 확인합니다.
C 반복문을 추적하는 예시
int sum = 0;
for (int i = 1; i <= 3; i++) {
sum += i;
}
printf("%d", sum);
| 반복 | i | sum 계산 | 반복 뒤 sum |
|---|---|---|---|
| 1회 | 1 | 0 + 1 | 1 |
| 2회 | 2 | 1 + 2 | 3 |
| 3회 | 3 | 3 + 3 | 6 |
조건 i <= 3이므로 세 번 반복하고 최종 출력은 6입니다. 문제를 풀 때도 초기값과 각 반복 뒤의 값을 분리해 적습니다.
언어별로 자주 확인할 부분
- C: 포인터가 가리키는 대상, 배열 인덱스, 정수 연산과 증감 시점
- Java: 상속·오버라이딩, 참조형, 예외 흐름과 메서드 호출 대상
- Python: 자료형의 변경 가능 여부, 슬라이싱, 반복 범위와 들여쓰기
언어가 다르면 같은 모양의 표현도 결과가 달라질 수 있습니다. 다른 언어의 습관으로 판단하지 말고 문제에서 지정한 언어의 규칙으로 확인합니다.
Java와 Python은 핵심 규칙을 한 줄씩 검증합니다
Java 오버라이딩 예시
class Parent { String name() { return "P"; } }
class Child extends Parent {
@Override String name() { return "C"; }
}
Parent ref = new Child();
System.out.print(ref.name());
참조 변수의 선언형은 Parent이지만 실제 객체는 Child이고 메서드가 오버라이딩되어 있으므로 출력은 C입니다.
Python 슬라이싱 예시
values = [1, 2, 3, 4]
print(values[1:4:2])
인덱스 1부터 4 직전까지 2칸씩 선택하므로 인덱스 1과 3의 값인 [2, 4]가 출력됩니다.
SQL은 결과 행을 직접 만듭니다
- FROM과 JOIN으로 만들어지는 행을 확인합니다.
- WHERE 조건으로 제외되는 행을 표시합니다.
- GROUP BY의 그룹과 집계값을 계산합니다.
- HAVING으로 제외되는 그룹을 확인합니다.
- SELECT 결과 열과 ORDER BY 순서를 마지막에 적용합니다.
NULL은 일반 값과 같은 방식으로 비교하지 않습니다. 문제에 사용된 DBMS나 SQL 방언이 명시되어 있다면 그 기준을 우선합니다.
LEFT JOIN과 COUNT를 확인하는 SQL 예시
member에는 (1, '민수'), (2, '지수')가 있고, score에는 (1, 80), (1, 90)만 있다고 가정합니다.
SELECT m.id, m.name, COUNT(s.score) AS score_count
FROM member AS m
LEFT JOIN score AS s ON s.member_id = m.id
GROUP BY m.id, m.name
ORDER BY m.id;
| id | name | score_count |
|---|---|---|
| 1 | 민수 | 2 |
| 2 | 지수 | 0 |
LEFT JOIN은 점수가 없는 지수의 행도 남깁니다. 그 행의 s.score는 NULL이고 COUNT(s.score)는 NULL을 세지 않으므로 결과는 0입니다. COUNT(*)를 쓰면 남아 있는 조인 행을 세어 결과가 달라질 수 있습니다.
검증을 학습으로 연결합니다
직접 실행했을 때 예상과 결과가 다르면 정답만 바꾸지 말고 처음 달라진 단계에 표시하세요. 다음 회독에서는 전체 코드를 다시 외우는 대신 그 단계부터 재현합니다.
실행형 문제 학습 기준 확인일: 2026년 8월 29일 · 자격증3001 운영자