super.draw 와 this.draw, *word + 4 같은 한 글자 차이가 넷. 리눅스 chmod 와 클라우드 3종처럼 분야 밖 용어도 둘 있다
왜 이걸 하나 — 세트는 시험장과 같은 조건에서만 숫자가 된다. 조건은 E01 과 같다.
규칙은 E01 진단의 01절 그대로다. 시작을 누르면 150분이 돌고, 1회독 100분 · 2회독 40분 · 검토 10분으로 나눈다. 한 문항에 5분이 넘으면 답 칸을 비우고 넘어가며, 정답은 20문항을 다 적은 뒤에 연다.
이 회차의 배점은 프로그래밍 8문항(40점) · 네트워크 3문항(15점) · SQL·DB 3문항(15점) · 보안 2문항(10점) · SW공학 2문항(10점) · 리눅스 · 클라우드 2문항(10점)이다. 코드 문항 수만큼 5분씩을 1회독에서 먼저 떼어 두고, 남는 시간을 용어에 쓴다. 용어는 아는 것을 바로 적고 모르는 것은 비운다 — 용어에서 고민하는 시간이 코드 한 문항의 값이다.
왜 이걸 하나 — 20문항을 한 번에 150분 안에 푸는 것 자체가 연습이다. 분야 장의 문제와 같은 문항이어도 조건이 다르다.
시작을 누르면 시계가 돌고 화면을 닫아도 이어진다. 다 적은 뒤 문항마다 정답 보기 → 맞았다 · 틀렸다를 누르면 위 막대에 점수와 분야별 결과가 모인다. 이 세트에서 채점한 기록은 분야 장의 같은 문항에도 그대로 보인다.
다음 Java 프로그램의 실행 결과를 쓰시오.
답 — BDCDD. super.draw() 만 부모 것이고, 그 안에서 부르는 draw() 와 this.draw() · value.draw() 는 전부 자식 것이다.
원리 — 객체가 Sub 이면 draw() 를 어디서 부르든 Sub 의 draw 가 돈다(오버라이딩, 실제 객체 기준). 딱 하나 예외가 super.draw() 로, "부모 판을 직접 불러라"는 지시다. 그런데 그 부모 판 안에서 다시 draw() 를 부르면 그것은 super 가 아니라 보통 호출이라 다시 자식 것으로 간다. 즉 super 는 그 한 줄에만 효력이 있고 안쪽까지 번지지 않는다. value.paint() 도 Sub 의 paint 다.
따라가기
헷갈리는 자리 — Base.draw 안의 draw() 를 부모 것으로 보고 B 가 계속 찍힌다고(무한 반복) 여기는 것. 자식이 draw 를 덮어썼으니 D 한 번으로 끝난다. Base.paint 의 A 는 한 번도 안 찍힌다 — paint 도 갈아끼워졌다.
복원 코드를 JDK 17 로 컴파일 · 실행해 같은 출력을 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장 · 변수명이 실제와 다를 수 있다.
비밀번호를 제3자 서비스에 노출하지 않고 접근 권한을 위임할 수 있게 하는 개방형 인가(Authorization) 표준은? ("구글 계정으로 로그인"의 원리)
답 — OAuth. 비밀번호를 넘기지 않고 "이 앱이 내 자료의 이 부분을 쓰게 해 달라"는 권한만 넘기는 개방형 인가 표준이다.
원리 — 어떤 앱이 내 구글 사진을 읽으려면 예전엔 구글 비밀번호를 그 앱에 줘야 했다. OAuth 는 대신 구글에 로그인해 "이 앱에 사진 읽기 권한 허용"을 누르면 구글이 앱에게 제한된 토큰을 준다 — 앱은 비밀번호를 모르고, 권한 범위와 기간이 정해지며, 언제든 취소할 수 있다. 인증(누구인가)이 아니라 인가(무엇을 할 수 있나)의 표준이고, "구글 계정으로 로그인"도 이 위에서 돈다. 2025년 3회 9번에 같은 정의로 다시 나왔다.
따라가기
헷갈리는 자리 — SSO(한 번 로그인으로 여러 시스템)나 OpenID(인증)와 섞는 것. "권한 위임"이 OAuth 의 표지다. 철자는 O 대문자 · Auth 다.
표준 · 교재 정의(암호 · 인증 · 접근 통제 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
다음 C 프로그램의 실행 결과를 줄바꿈까지 맞춰 쓰시오.
답 — KOREA / OREA / K / E / O. 괄호가 있느냐 없느냐로 넷째 줄과 다섯째 줄이 갈린다.
원리 — char *word = "KOREA" 는 K · O · R · E · A · 끝표 여섯 칸의 첫 칸 주소다. 주소에 1 을 더하면(word + 1) 한 칸 옆의 주소이고, 거기서 %s 로 찍으면 그 칸부터 끝까지 나온다. 별표는 "그 주소의 칸을 열어라"이고, 열어 나온 것은 글자인데 글자는 사실 숫자(문자 코드)라 더하기가 된다. K 는 75, 75 + 4 = 79 는 O 다. *(word + 3) 은 "3칸 옆으로 간 뒤 연다", *word + 4 는 "첫 칸을 연 뒤 그 글자에 4 를 더한다" — 괄호가 순서를 바꾼다.
따라가기
%s, word → 첫 칸부터 → KOREA%s, word + 1 → 둘째 칸부터 → OREA%c, *word → 첫 칸 글자 → K%c, *(word + 3) → 넷째 칸(0 · 1 · 2 · 3) 글자 → E%c, *word + 4 → K(75) + 4 = 79 → O. 마지막 줄엔 줄바꿈이 없다.헷갈리는 자리 — 다섯째 줄을 A(4칸 옆 글자)로 적는 것. 별표가 먼저 붙어 글자를 꺼낸 뒤 4 를 더하므로 자리 이동이 아니라 글자 값 이동이다. 알파벳은 코드가 이어져 있어 K 에서 네 글자 뒤가 O 라고 세도 된다.
복원 코드를 gcc(도커 alpine)로 실행해 같은 출력을 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장 · 변수명이 실제와 다를 수 있다.
다음 C 코드에서 구조체 포인터가 멤버에 접근하도록 ①에 들어갈 기호를 쓰시오.
답 — ->. 포인터를 거쳐 구조체의 멤버로 들어갈 때 쓰는 화살표다.
원리 — 구조체 변수에 바로 붙을 때는 점(data.score)을 쓴다. 그런데 pointer 는 구조체가 아니라 구조체의 주소를 적은 쪽지라, 먼저 쪽지를 따라가서 구조체를 연 다음(*pointer) 점을 붙여야 한다. 그 두 동작 (*pointer).score 를 한 글자로 줄인 것이 pointer->score 다. 화살표는 "따라가서 그 안의"라고 읽는다. 괄호가 필요한 이유는 점이 별표보다 먼저 붙어 *pointer.score 가 "pointer.score 를 연다"로 읽히기 때문이다.
따라가기
struct Member data = {90} — data.score = 90pointer = &data — pointer 는 data 의 주소pointer->score → data.score → 90 이 찍힌다헷갈리는 자리 — 답 칸에 점을 적는 것. 점은 구조체 변수 자체에만 붙고 포인터에는 못 붙는다(컴파일 오류). (*pointer).score 도 뜻은 같지만 문제는 "기호 하나"를 물었으므로 화살표만 적는다. 화살표는 빼기와 부등호를 붙여 쓰며 사이에 띄어쓰기가 없다.
빈칸에 답을 넣어 gcc(도커 alpine)로 컴파일 · 실행해 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장 · 변수명이 실제와 다를 수 있다.
Linux에서 a.txt에 소유자 읽기·쓰기·실행, 그룹 읽기·실행, 기타 실행 권한을 8진수로 부여하는 한 줄 명령: (①) (②) a.txt
답 — ① chmod ② 751. 소유자 rwx(7) · 그룹 r-x(5) · 기타 --x(1)을 8진수 세 자리로 붙인 것이다.
원리 — 리눅스 파일 권한은 소유자 · 그룹 · 기타 세 묶음이고, 묶음마다 읽기 r · 쓰기 w · 실행 x 세 비트다. r = 4, w = 2, x = 1 로 두고 더하면 한 묶음이 0~7 한 자리 8진수가 된다 — rwx = 4+2+1 = 7, r-x = 4+1 = 5, --x = 1, rw- = 6, r-- = 4. 그래서 권한 전체는 세 자리 8진수 하나로 표현되고, chmod(change mode) 명령이 그 값을 파일에 붙인다. ls -l 에서 보이는 -rwxr-x--x 가 곧 751 이다.
따라가기
헷갈리는 자리 — chown 을 적는 것. chown 은 소유자(owner)를 바꾸고, chmod 는 권한(mode)을 바꾼다. 그리고 순서를 "기타 · 그룹 · 소유자"로 거꾸로 읽어 157 로 적는 실수 — 항상 소유자가 맨 앞이다.
표준 · 교재 정의(운영체제 · 리눅스 명령 · 웹 · 클라우드 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
유스케이스·클래스 등 모델 요소들을 관련된 것끼리 그룹화하여 표현하는 UML 다이어그램은?
답 — 패키지 다이어그램(Package Diagram). 관련 있는 요소들을 폴더처럼 묶어 "무엇이 무엇에 기대는가"를 큰 단위로 보여 주는 구조 다이어그램이다.
원리 — 클래스가 수백 개가 되면 클래스 다이어그램 한 장으로는 전체 그림이 안 보인다. 그래서 UML 은 관련된 요소(클래스 · 유스케이스 · 다른 패키지)를 "패키지"라는 폴더 모양 상자에 넣고, 패키지끼리의 의존 관계(점선 화살표)만 그리는 다이어그램을 따로 둔다. 자바의 패키지, 폴더 구조와 같은 발상이다 — 낱개를 다 그리지 않고 묶음 사이의 관계만 본다. 문제의 "모델 요소들을 관련된 것끼리 그룹화"가 곧 패키지의 정의다.
따라가기
헷갈리는 자리 — 컴포넌트 다이어그램을 적는 것. 컴포넌트는 "실행 단위(jar · dll)와 인터페이스"를 그리고, 패키지는 "논리적 묶음"을 그린다. 배치(Deployment)는 하드웨어 노드에 무엇이 올라가는가다. 같은 문제가 2025-3-01 에 다시 나왔다.
표준 · 교재 정의(결합도 6단계 · 응집도 7단계 · UML 2.x 다이어그램 분류)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
입력 데이터를 유효한 값과 무효한 값의 그룹으로 나누고 각 그룹의 대표값으로 테스트케이스를 도출하는 블랙박스 기법은?
답 — 동등 분할(동치 분할, Equivalence Partitioning). 입력을 "같은 취급을 받는 묶음"으로 나누고 묶음마다 대표 하나만 검사하는 블랙박스 기법이다.
원리 — 나이 입력이 0~120 이 유효하다면 30 을 넣어 통과한 프로그램은 31 · 50 도 거의 확실히 통과시킨다 — 같은 코드 경로를 타기 때문이다. 그래서 모든 값을 다 넣는 대신 "유효 묶음(0~120)" 하나, "무효 묶음(음수, 121 이상)" 둘로 나누고 각 묶음에서 대표값(예: 50, −5, 200) 하나씩만 고른다. 케이스 수는 확 줄고 묶음은 빠짐없이 덮인다. 코드를 안 보고 명세(유효 범위)만으로 만드니 블랙박스다. 경계값 분석은 여기서 한발 더 나가 묶음의 "경계(−1 · 0 · 120 · 121)"를 고른다.
따라가기
헷갈리는 자리 — 경계값 분석으로 적는 것. 경계값은 "경계 근처 값"을 고르고, 동등 분할은 "묶음의 대표값"을 고른다. 문제에 "대표값 · 그룹 · 클래스"가 있으면 동등 분할, "경계 · 끝값 · −1, 0, 100, 101" 이 있으면 경계값이다.
표준 · 교재 정의(ISTQB 용어 · 커버리지 6단계 · 테스트 수준)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
다음 두 테이블과 SQL문의 실행 결과를 순서대로 쓰시오.
| T1.A |
|---|
| 1 |
| 2 |
| 3 |
| 3 |
| T2.A |
|---|
| 2 |
| 4 |
답 — 열 A 에 4 / 3 / 2 / 1 네 행. UNION 은 중복을 지우고, DESC 는 큰 값부터다.
원리 — UNION 은 두 SELECT 의 결과를 위아래로 이어 붙이되 같은 행은 하나만 남긴다(집합의 합집합). 중복까지 다 남기려면 UNION ALL 이다. T1 의 3 이 두 번 있어도 하나로 접히고, T2 의 2 는 T1 에도 있으니 하나만 남는다. ORDER BY A DESC 는 합친 결과 전체를 A 기준 내림차순으로 정렬한다 — 정렬은 마지막에 한 번만 걸린다.
따라가기
헷갈리는 자리 — 3 을 두 번, 2 를 두 번 남겨 여섯 행으로 적는 것(UNION ALL 의 결과). DESC 를 오름차순으로 읽어 1 2 3 4 로 적는 것. 답을 표 꼴로 요구하면 열 이름 A 까지 적는다. UNION 을 쓰려면 두 SELECT 의 열 수와 자료형이 같아야 한다는 것도 같은 묶음의 규칙이다.
표를 sqlite 3.49 에 넣고 같은 SQL 을 실행해 결과를 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 표 · 값이 실제와 다를 수 있다.
다음 C 프로그램의 실행 결과를 쓰시오.
답 — 34. 2 부터 100 사이의 완전수는 6 과 28 뿐이고 그 합이 34 다.
원리 — 완전수는 자기 자신을 뺀 약수를 전부 더하면 자기 자신이 되는 수다. 6 의 약수 1 · 2 · 3 은 더하면 6 이다. isPerfect 는 1 부터 number / 2 까지 나눠떨어지는 수(약수)를 더해 number == total 인지 돌려준다. 자기 자신보다 큰 약수는 없고 자기 자신의 절반보다 큰 약수도 자기 자신뿐이라 절반까지만 본다. main 은 2 부터 100 까지 그 검사를 돌려 참인 수를 result 에 더한다. C 에서 비교식은 참이면 1, 거짓이면 0 이라 return number == total 이 그대로 조건이 된다.
따라가기
헷갈리는 자리 — 1 을 완전수로 세는 것. 1 의 약수 합은 0 이라 아니고, 어차피 반복이 2 부터 시작한다. 2 부터 100 을 손으로 다 돌리지 말고 "완전수 6 · 28 · 496 · 8128" 네 개를 외워 두면 이 유형은 즉답이다.
복원 코드를 gcc(도커 alpine)로 실행해 같은 출력을 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장 · 변수명이 실제와 다를 수 있다.
내부에서는 사설 IP를 쓰고, 외부와 통신할 때 공인 IP로 변환해주는 네트워크 주소 변환 기술은?
답 — NAT. 안에서는 사설 IP 를 쓰고 밖으로 나갈 때 공인 IP 로 바꿔 주는 주소 변환이다.
원리 — 공인 IPv4 주소는 모자라서 집 · 회사 안의 장비들은 10.x · 172.16~31.x · 192.168.x 같은 사설 주소를 쓴다. 사설 주소는 인터넷에서 통하지 않으므로 공유기(라우터)가 밖으로 나가는 패킷의 출발지 주소를 자기 공인 IP 로 바꿔 쓰고, 돌아오는 패킷은 표를 보고 원래 사설 주소로 되돌린다. 이것이 NAT(Network Address Translation)이고, 포트까지 함께 바꿔 여러 장비가 공인 IP 하나를 나눠 쓰는 것을 PAT · NAPT 라 한다. 주소 절약과 내부 숨김이 장점이다.
따라가기
헷갈리는 자리 — DHCP(주소 자동 할당)나 프록시와 섞는 것. NAT 는 주소를 "바꾸는" 것이다. 사설 IP 대역 세 묶음(10 / 172.16~31 / 192.168)은 함께 묻는 단골이다.
표준 · 교재 정의와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
음성·데이터를 53바이트 고정 길이 셀(Cell)로 분할해 전송하는 비동기 전송 모드 교환 기술은?
답 — ATM. 모든 데이터를 53바이트 고정 길이 셀로 잘라 보내는 비동기 전송 모드다.
원리 — 패킷 길이가 제각각이면 스위치가 처리하기 어렵고 음성처럼 시간에 민감한 데이터가 밀린다. ATM(Asynchronous Transfer Mode)은 길이를 53바이트(헤더 5 + 데이터 48)로 통일한 "셀"을 쓰고, 셀이 작고 일정해 하드웨어로 빠르게 스위칭하며 음성 · 영상 · 데이터를 한 망에서 다룬다. 가상 회선 기반의 연결형이다. "53바이트 · 셀 · 비동기 전송 모드" 셋 중 하나만 보여도 ATM 이다.
따라가기
헷갈리는 자리 — 프레임 릴레이(가변 길이 프레임, 오류 제어 생략)나 X.25 와 섞는 것. 고정 길이 셀은 ATM 뿐이다. 셀 크기 53 과 데이터 48 을 바꿔 적지 않는다.
표준 · 교재 정의(OSI · TCP/IP · IEEE · RFC 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
다음 Java 코드에서 컴파일 오류가 발생하는 줄 번호를 쓰시오.
답 — 7번 줄. static 메서드 안에서 인스턴스 필드 name 을 읽으려 해서 컴파일이 막힌다.
원리 — 인스턴스 필드(name)는 객체가 만들어져야 생기는 칸이다. static 메서드는 객체 없이 클래스 이름만으로 불릴 수 있는 메서드라, 그 안에는 "어느 객체의 name 인가"를 가리킬 this 가 없다. 그래서 static 메서드에서 인스턴스 필드나 인스턴스 메서드를 그냥 쓰면 컴파일러가 막는다. 반대로 인스턴스 메서드 print() 는 this 가 있으니 10번 줄은 문제없다. private 은 같은 클래스 안이라 상관없다.
따라가기
return name → "non-static field cannot be referenced from a static context" → 7번 줄헷갈리는 자리 — 6번 줄(선언부)을 적는 것. 선언 자체는 오류가 아니고 그 안에서 name 을 쓴 줄이 오류다. 2번 줄의 private 을 의심하는 것 — 같은 클래스 안이라 문제없다. 고치려면 static 을 빼거나 name 을 static 으로 만들면 된다.
복원 코드를 JDK 17 로 컴파일해 그 줄에서 오류가 나는 것을 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장 · 변수명이 실제와 다를 수 있다.
접근 통제 3종: ① 보안 등급(레이블) 기반 강제 통제 ② 역할 기반 통제 ③ 소유자가 임의로 결정하는 신분 기반 통제
답 — ① MAC ② RBAC ③ DAC. 누가 접근 규칙을 정하느냐로 갈리는 세 정책이다.
원리 — 접근 통제는 "누가 어떤 자료에 손댈 수 있나"를 정하는 것이고 정하는 주체가 다르다. 강제적 접근 통제(MAC)는 시스템이 자료와 사람에 보안 등급(기밀 · 비밀 · 일반)을 붙여 등급 규칙으로 강제한다 — 군 · 정부. 임의적 접근 통제(DAC)는 자료의 소유자가 "누구에게 읽기 · 쓰기"를 임의로 준다 — 파일 권한, 유닉스 chmod. 역할 기반(RBAC)은 사람이 아니라 역할(관리자 · 회계)에 권한을 붙이고 사람에게 역할을 준다 — 회사 시스템. 표지는 "등급 · 레이블 = MAC", "소유자 = DAC", "역할 = RBAC" 다.
따라가기
헷갈리는 자리 — MAC 을 네트워크의 MAC 주소로 읽는 것. 여기 MAC 은 Mandatory Access Control 이다. DAC 의 D 는 Discretionary(임의)이고, 2025년 3회 10번은 같은 셋을 영문 약자로 물었다.
표준 · 교재 정의(암호 · 인증 · 접근 통제 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
다음 Java 프로그램의 실행 결과를 쓰시오.
답 — 2. 부모 타입 변수에 자식 객체가 들어 있으므로 Child 의 compute(n − 1 과 n − 3 규칙)가 돌고, 그 재귀 안의 호출도 전부 Child 것이다.
원리 — Parent value = new Child() 는 겉은 Parent, 속은 Child 다. 메서드는 속(실제 객체)을 따르므로 value.compute(7) 은 Child.compute 다. 그 안에서 자기를 다시 부르는 compute(number - 1) 도 같은 객체의 메서드라 계속 Child 규칙이다. 멈춤 조건 number <= 1 은 그 수를 그대로 돌려주므로 0 과 음수도 값으로 나온다 — 여기서 −1 이 나오는 것이 계산의 핵심이다. 작은 수부터 표를 만들어 올라간다.
따라가기 — c(n) = c(n − 1) + c(n − 3), n ≤ 1 이면 n.
헷갈리는 자리 — Parent 규칙(n − 1, n − 2)으로 풀어 피보나치 13 을 적는 것. 그리고 c(−1) 을 0 으로 두는 것 — 조건이 <= 1 이라 −1 을 그대로 돌려준다. 이 두 자리에서 답이 갈린다.
복원 코드를 JDK 17 로 컴파일 · 실행해 같은 출력을 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장 · 변수명이 실제와 다를 수 있다.
다음 C 프로그램의 실행 결과를 쓰시오.
답 — 5040. factorial(7) = 7 × 6 × 5 × 4 × 3 × 2 × 1 이다.
원리 — 재귀 함수는 자기 자신을 더 작은 문제로 부른다. "7 의 계승은 7 곱하기 6 의 계승"이고, "6 의 계승은 6 곱하기 5 의 계승"… 이렇게 내려가다 1 이하가 되면 더 부르지 않고 1 을 돌려준다(멈춤 조건). 그다음은 돌아오는 길이다 — 안쪽에서 돌려받은 값에 자기 수를 곱해 위로 올린다. 재귀는 "내려갈 때는 아무것도 계산하지 않고, 바닥에 닿은 뒤 올라오면서 곱한다"고 보면 값이 틀리지 않는다.
따라가기
헷갈리는 자리 — 멈춤 조건이 number <= 1 이라 factorial(0) 도 1 이고, 1 을 곱하는 단계가 하나 더 있다고 생각해 두 번 곱하는 것. 곱은 7 부터 2 까지 여섯 번이다. 계승은 빨리 커져 13! 부터는 int 를 넘치지만 7! 은 안전하다.
복원 코드를 gcc(도커 alpine)로 실행해 같은 출력을 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장 · 변수명이 실제와 다를 수 있다.
공백으로 구분해 입력한 두 값을 각각 저장하려고 한다. Python 코드의 ①에 들어갈 메서드 이름을 쓰시오.
답 — split. 한 줄로 받은 입력을 공백 기준으로 잘라 리스트로 만드는 메서드다.
원리 — input() 은 사용자가 친 한 줄을 통째로 문자열 하나로 돌려준다. "3 5" 처럼 두 값을 공백으로 나눠 쳤다면 그것을 잘라야 하는데, split() 은 인자를 안 주면 공백(연속된 공백도 하나로)을 기준으로 잘라 리스트 ['3', '5'] 를 돌려준다. 리스트의 원소 수와 왼쪽 변수 수가 같으면 first, second = … 로 한 번에 나눠 담을 수 있다(언패킹). 잘린 조각은 아직 문자열이라 int() 로 숫자로 바꾼다.
따라가기
헷갈리는 자리 — strip(양끝 공백 제거)이나 join(반대로 붙이기)을 적는 것. "나누다"는 split 이다. 괄호 안에 ' ' 를 넣어도 되지만 답은 메서드 이름만이다. 세 값을 쳤다면 변수 두 개에 못 담아 오류가 난다는 것도 같은 문법의 함정이다.
빈칸에 답을 넣어 Python 3.12 로 실행해 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장 · 변수명이 실제와 다를 수 있다.
클라우드 서비스 3종: ① 서버·스토리지 등 인프라 제공 ② 개발·실행 플랫폼 제공 ③ 응용 소프트웨어를 서비스로 제공
답 — ① IaaS ② PaaS ③ SaaS. 아래(인프라)부터 위(소프트웨어)까지 "어디까지 빌려주나"로 갈린다.
원리 — 클라우드는 남의 컴퓨터를 빌려 쓰는 것인데 빌리는 층이 다르다. IaaS(Infrastructure)는 서버 · 저장소 · 네트워크 같은 인프라만 빌린다 — OS 설치부터 내가 한다(AWS EC2). PaaS(Platform)는 OS · 런타임 · DB 까지 갖춰진 개발 · 실행 플랫폼을 빌린다 — 코드만 올리면 돈다(Heroku · App Engine). SaaS(Software)는 완성된 응용 프로그램을 서비스로 쓴다 — 설치도 개발도 없다(Gmail · 노션). 위로 갈수록 제공자가 관리하는 범위가 넓고 내 자유도는 줄어든다.
따라가기
헷갈리는 자리 — PaaS 와 SaaS 를 바꾸는 것. "개발자가 코드를 올리는 자리"면 PaaS, "최종 사용자가 그냥 쓰는 완성품"이면 SaaS 다. 영문 첫 글자 I · P · S 가 Infrastructure · Platform · Software 라는 것만 붙잡으면 된다.
표준 · 교재 정의(운영체제 · 리눅스 명령 · 웹 · 클라우드 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
IGP 중 거리 벡터 알고리즘 기반으로 최대 홉 수가 15인 라우팅 프로토콜은?
답 — RIP. 홉 수를 거리로 쓰는 거리 벡터 방식이고 15홉을 넘으면 닿을 수 없다고 본다.
원리 — 라우팅 프로토콜은 "길을 어떻게 알아내나"로 나뉜다. 거리 벡터 방식은 이웃 라우터끼리 "나는 어디까지 몇 홉"이라는 표를 주기적으로 주고받아 표를 만든다 — 단순하지만 망이 커지면 느리고 루프가 생길 수 있어 RIP 은 최대 홉을 15 로 잘라 16 은 무한(도달 불가)으로 친다. 30초마다 표를 교환한다. 링크 상태 방식(OSPF)은 망 전체의 링크 지도를 만들어 다익스트라로 계산한다. 둘 다 한 조직 안(자율 시스템 안)에서 쓰는 IGP 이고, 조직 사이는 BGP(EGP)다.
따라가기
헷갈리는 자리 — OSPF 를 적는 것. "홉 수 · 15 · 거리 벡터 · 벨만-포드"는 RIP, "링크 상태 · 다익스트라 · Area" 는 OSPF 다. 2024년 1회 7번 · 2026년 2회 4번이 OSPF 쪽 표지로 같은 짝을 물었다.
표준 · 교재 정의와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
관계대수 연산 기호 매칭: ① Join ② Project ③ Select ④ Division
답 — ① ⋈ ② π ③ σ ④ ÷. 관계대수 네 연산의 기호다.
원리 — 관계대수는 표에 가하는 연산을 기호로 적는 언어다. σ(시그마, Select)는 조건에 맞는 행을 고른다 — SQL 의 WHERE. π(파이, Project)는 원하는 열만 뽑는다 — SQL 의 SELECT 열 목록(중복 제거). ⋈(나비넥타이, Join)는 두 표를 공통 속성으로 잇는다. ÷(Division)는 "S 의 모든 값과 짝지어진 R 의 값"을 고른다. 이 네 개 외에 합집합 ∪ · 교집합 ∩ · 차집합 − · 카티션 곱 × 이 있다.
따라가기
헷갈리는 자리 — Select 를 열 고르기로 착각해 π 와 바꾸는 것. 관계대수의 Select 는 SQL 의 SELECT 가 아니라 WHERE 다 — "행은 σ, 열은 π"로 외운다. 기호를 묻는데 이름을 적으면 0 점이다.
교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
외래키의 값은 참조하는 릴레이션의 기본키 값과 일치하거나 NULL이어야 한다는 무결성 제약조건은?
답 — 참조 무결성. 외래키는 상대 표의 기본키에 실제로 있는 값이거나 NULL 이어야 한다는 규칙이다.
원리 — 무결성은 "표에 말이 안 되는 값이 들어오지 못하게 하는 규칙"이다. 세 가지가 시험에 나온다. 개체 무결성 — 기본키는 NULL 도 중복도 안 된다. 참조 무결성 — 외래키 값은 참조하는 표의 기본키에 있어야 한다(없는 부서 코드를 직원에 적을 수 없다), 단 NULL 은 된다. 도메인 무결성 — 값은 그 속성의 허용 범위 안이어야 한다(학년 1~4). 문제 문장의 "외래키 · 참조하는 기본키" 낱말이 참조 무결성의 표지다.
따라가기
헷갈리는 자리 — 개체 무결성과 바꾸는 것. 기본키 이야기면 개체, 외래키 이야기면 참조다. "NULL 이어야 한다"가 아니라 "NULL 이어도 된다"는 것도 정확히 — 외래키는 비어 있을 수 있다.
교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
왜 이걸 하나 — 점수보다 어느 장으로 돌아가느냐가 결과다. 문항마다 가는 장이 정해져 있다.
코드 8문항 중 C 4 · Java 3 · Python 1 이다. 9번 완전수의 합(6 + 28 = 34)과 15번 factorial(7) = 5040 은 계산이 길어 보여도 규칙이 하나라 종이에 적으면 틀릴 데가 없다. 14번은 부모 타입 참조로 자식의 compute 가 불리고, 그 안의 재귀도 자식 것이 계속 불린다는 것이 핵심이다.
12번은 실행 결과가 아니라 컴파일 오류 줄을 묻는다. static 메서드 getName() 안에서 인스턴스 필드 name 을 읽는 7번 줄이 답이고, 이 꼴은 E06 03절에 그대로 있다. 8번 UNION 은 중복을 지우고 DESC 로 내림차순이라 4 3 2 1 네 행이다.
용어 12문항 중 네트워크가 셋(NAT · ATM · RIP)이고 보안 둘(OAuth · 접근 통제 3종)이다. 5번 chmod 751 과 17번 IaaS · PaaS · SaaS 는 분야 장에 얇게만 있는 것이라 E16 의 기타 표에서 낱말만 챙긴다. 6번 패키지 다이어그램은 2025년 3회에 그대로 다시 나왔다.
틀린 문항의 「가는 장」을 열면 그 문항이 04절에 그대로 있고, 앞뒤로 같은 꼴의 문항이 붙어 있다. 몰라서 틀렸으면 그 장 03절부터, 알았는데 틀렸으면 05절만 읽는다. 판정 기준은 E01 의 03절 표와 같다.
| 문항 | 분야 | 가는 장 | 무엇을 묻나 |
|---|---|---|---|
| 1 | Java | E05 | 부모 참조로 자식 메서드 — super.draw 와 this.draw |
| 2 | 보안 | E13 | 권한 위임 표준 OAuth |
| 3 | C | E02 | 문자열 포인터 산술 — word + 1 과 *word + 4 |
| 4 | C | E03 | 구조체 포인터 멤버 접근 -> |
| 5 | 리눅스 | E16 | chmod 751 |
| 6 | UML | E15 | 패키지 다이어그램 |
| 7 | 테스트 | E18 | 동등 분할 정의 |
| 8 | SQL | E08 | UNION 중복 제거 + ORDER BY DESC |
| 9 | C | E04 | 2~100 완전수의 합 |
| 10 | 네트워크 | E12 | 사설 IP 변환 NAT |
| 11 | 네트워크 | E11 | 53바이트 셀 ATM |
| 12 | Java | E06 | static 메서드에서 인스턴스 필드 — 컴파일 오류 줄 |
| 13 | 보안 | E13 | MAC · RBAC · DAC 접근 통제 |
| 14 | Java | E05 | 오버라이딩된 재귀 compute(7) |
| 15 | C | E03 | factorial(7) 재귀 |
| 16 | Python | E07 | input().split() 빈칸 |
| 17 | 클라우드 | E16 | IaaS · PaaS · SaaS |
| 18 | 네트워크 | E12 | 홉 수 15 거리 벡터 RIP |
| 19 | DB | E10 | 관계대수 기호 ⋈ π σ ÷ |
| 20 | DB | E10 | 참조 무결성 정의 |
| 문항 | 왜 갈리나 |
|---|---|
| 1번 | value.paint() 는 Sub 의 paint → super.draw() 가 B 를 찍고 그 안의 draw() 는 Sub 것(D) → C → this.draw() D. 그다음 value.draw() 가 D. BDCDD |
| 3번 | word + 1 은 OREA, *(word + 3) 은 E, *word + 4 는 K 에 4를 더한 문자 O 다. 괄호 위치가 답을 바꾼다 |
| 14번 | compute(7) 이 Child 의 규칙(n − 1 과 n − 3)으로 재귀한다. compute(−1) = −1 이라 compute(2) = 0, compute(3) = 0, compute(4) = 1 … 로 올라가면 2 |
| 19번 | 관계대수 기호 ⋈ π σ ÷. 기호를 묻는데 이름을 적으면 0점이다 |
채점 결과는 오답노트에 회차별 점수와 틀린 문항 목록으로 모인다. 세트를 하나 끝낼 때마다 거기서 같은 장에서 반복해서 틀리는지를 본다. 두 세트에서 같은 장이 나오면 그 장의 06절 훈련을 그날 5문항 푼다.
왜 이걸 하나 — 세트의 결과는 다음에 열 장의 이름이어야 한다.