보안 3 · SQL 2 · DB 2 로 용어가 무겁고, COUNT(COL2) 의 NULL, CROSS JOIN LIKE, R ÷ S 가 SQL·DB 4문항을 채운다
왜 이걸 하나 — 세트는 시험장과 같은 조건에서만 숫자가 된다. 조건은 E01 과 같다.
규칙은 E01 진단의 01절 그대로다. 시작을 누르면 150분이 돌고, 1회독 100분 · 2회독 40분 · 검토 10분으로 나눈다. 한 문항에 5분이 넘으면 답 칸을 비우고 넘어가며, 정답은 20문항을 다 적은 뒤에 연다.
이 회차의 배점은 프로그래밍 8문항(40점) · SQL·DB 4문항(20점) · 보안 3문항(15점) · SW공학 3문항(15점) · 네트워크 1문항(5점) · 리눅스 1문항(5점)이다. 코드 문항 수만큼 5분씩을 1회독에서 먼저 떼어 두고, 남는 시간을 용어에 쓴다. 용어는 아는 것을 바로 적고 모르는 것은 비운다 — 용어에서 고민하는 시간이 코드 한 문항의 값이다.
왜 이걸 하나 — 20문항을 한 번에 150분 안에 푸는 것 자체가 연습이다. 분야 장의 문제와 같은 문항이어도 조건이 다르다.
시작을 누르면 시계가 돌고 화면을 닫아도 이어진다. 다 적은 뒤 문항마다 정답 보기 → 맞았다 · 틀렸다를 누르면 위 막대에 점수와 분야별 결과가 모인다. 이 세트에서 채점한 기록은 분야 장의 같은 문항에도 그대로 보인다.
모델 요소들을 관련된 것끼리 그룹화하여 표현하는 UML 다이어그램은?
답 — 패키지 다이어그램(Package Diagram). 2023-3-06 과 같은 문제다 — 관련 요소를 묶고 묶음 사이 의존을 그린다.
원리 — UML 구조 다이어그램에는 클래스 · 객체 · 컴포넌트 · 배치 · 패키지 · 복합 구조 다이어그램이 있고, 그중 "요소를 그룹화"하는 것이 패키지다. 패키지는 폴더 모양 기호로 그리고, 안에 클래스 · 유스케이스 · 하위 패키지를 담는다. 패키지 사이에는 점선 화살표로 의존(import · access)을 표시한다. 큰 시스템을 층(화면 · 서비스 · 저장)이나 기능(주문 · 결제 · 회원)으로 나눠 "어느 묶음이 어느 묶음을 쓰는가"를 한눈에 보는 용도다.
따라가기
헷갈리는 자리 — 클래스 다이어그램을 적는 것. 클래스 다이어그램은 낱개 클래스와 그 관계, 패키지 다이어그램은 묶음과 묶음의 관계다. 같은 문제가 두 번 나왔으니 "그룹화 = 패키지"로 굳혀 둔다.
표준 · 교재 정의(결합도 6단계 · 응집도 7단계 · UML 2.x 다이어그램 분류)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
다음 C 프로그램의 실행 결과를 쓰시오.
답 — C. p 는 둘째 원소 {2, "DC"} 를 가리키고, "DC" 의 주소에서 한 칸 옆부터 끝까지 찍으면 C 다.
원리 — 구조체 배열의 원소 하나는 offset 과 text 두 칸을 가진 묶음이다. &items[1] 은 둘째 묶음의 주소이고, p->text 는 그 묶음 안의 text, 즉 문자열 "DC" 의 첫 글자 주소다. 문자열 주소에 수를 더하면 그만큼 옆 글자부터 시작하는 문자열이 된다. %s 는 시작 주소부터 끝표 전까지 찍으므로 "DC" + 1 은 "C" 다. 화살표 -> 는 "포인터가 가리키는 구조체의 그 칸"이라는 뜻으로 (*p).text 와 같다.
따라가기
헷갈리는 자리 — items[1] 을 "1번째"로 읽어 첫 묶음 {1, "AB"} 로 보는 것(첨자는 0 부터). 그리고 %c 가 아니라 %s 라 글자 하나가 아니라 그 자리부터 끝까지인데, 여기선 남은 글자가 C 하나라 결과가 같아 보일 뿐이다.
복원 코드를 gcc(도커 alpine)로 실행해 같은 출력을 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장 · 변수명이 실제와 다를 수 있다.
UNIX/Linux 명령어: ① 현재 작업 경로 표시 ② 파일 목록 보기 ③ 디렉터리 이동 ④ 파일 복사
답 — ① pwd ② ls ③ cd ④ cp. 리눅스 기본 명령 네 개의 영문 약자를 풀면 답이 보인다.
원리 — 유닉스 명령은 대부분 영어 낱말의 약자다. pwd = print working directory, 지금 내가 있는 경로를 찍는다. ls = list, 현재 디렉터리의 파일 목록을 보여 준다(-l 자세히, -a 숨김 파일까지). cd = change directory, 다른 디렉터리로 옮긴다(cd .. 은 상위). cp = copy, 파일을 복사한다(cp 원본 사본, -r 로 디렉터리째). 짝으로 mv(move, 이동 · 이름 바꾸기) · rm(remove, 삭제) · mkdir(make directory) · cat(내용 출력) · chmod · chown 도 같이 나온다.
따라가기
헷갈리는 자리 — cp 와 mv 를 바꾸는 것. cp 는 원본을 남기고 사본을 만들고, mv 는 원본을 옮긴다(이름 바꾸기도 mv). 그리고 윈도우 명령 dir · copy 를 적는 실수 — 문제는 UNIX/Linux 다.
표준 · 교재 정의(운영체제 · 리눅스 명령 · 웹 · 클라우드 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
결정 포인트 내 개별 조건식이 참/거짓을 한 번씩 갖도록 하는 화이트박스 커버리지는?
답 — 조건 커버리지. 2023-2-06 과 같은 정의다 — 결정 안의 개별 조건식이 참 · 거짓을 한 번씩.
원리 — 결정문 if (A || B) 에서 "결정"은 A || B 의 값, "조건"은 A 와 B 각각이다. 조건 커버리지는 A 가 T 와 F 를, B 가 T 와 F 를 각각 한 번은 갖도록 케이스를 짠다. 예를 들어 (A=T, B=F) 와 (A=F, B=T) 두 케이스면 A 도 B 도 T/F 를 다 가졌으니 만족한다 — 그런데 이때 결정 A || B 는 둘 다 T 라 결정 커버리지는 미달이다. 조건 커버리지는 "낱개 조건"을 보는 자이지 "갈래"를 보는 자가 아니라는 것이 핵심이다.
따라가기
헷갈리는 자리 — 결정(분기) 커버리지로 적는 것. 두 번 출제된 만큼 "개별 조건식 = 조건 커버리지"를 반사적으로 잇는다. 그리고 "조건/결정 커버리지"는 둘을 동시에 만족하는 것이라 문제에 "결정 결과도"라는 말이 붙을 때만 답이다.
표준 · 교재 정의(ISTQB 용어 · 커버리지 6단계 · 테스트 수준)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
다음 Java 프로그램의 실행 결과를 쓰시오.
답 — AB. Word.B.name() 은 "B" 라 길이 1 이고, values()[1] 은 둘째 상수 B 라 그 text "AB" 가 나온다.
원리 — enum 은 정해진 상수들의 목록이고, 각 상수는 생성자를 통해 자기 값(text)을 가진다. name() 은 상수의 이름 자체("B")를 문자열로 돌려주고, getText() 는 우리가 넣은 값("AB")을 돌려준다 — 둘은 다르다. values() 는 상수를 선언 순서대로 담은 배열이라 [0] A, [1] B, [2] C 다. 그러니 values()[Word.B.name().length()] 는 values()[1] = B 이고, 그 text 가 답이다.
따라가기
헷갈리는 자리 — name() 을 text("AB")로 읽어 길이 2 → values()[2] = C → "ABC" 를 적는 것. name 은 상수 이름이다. 첨자가 0 부터라는 것을 잊고 values()[1] 을 A 로 보는 것도 있다.
복원 코드를 JDK 17 로 컴파일 · 실행해 같은 출력을 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장 · 변수명이 실제와 다를 수 있다.
오류 제어 매칭: ① 검출+수정 코드 ② 수신 측 자가 수정 방식 ③ 재전송 요청 방식 ④ 홀짝 1비트 검사 ⑤ 다항식 기반 검출
답 — ① Hamming ② FEC ③ BEC ④ Parity ⑤ CRC. 2023년 2회 20번과 같은 다섯 낱말을 영문으로 적는다.
원리 — 오류 제어는 두 갈래다. 수신 측이 스스로 고치는 FEC(Forward Error Correction)와 재전송을 요구하는 BEC(Backward Error Correction, ARQ). FEC 의 대표 해밍(Hamming) 코드는 여분 비트로 1비트 오류의 위치를 찾아 고친다. 검출만 하는 것으로 패리티(Parity, 홀짝 1비트)와 CRC(다항식 나눗셈)가 있다. 낱말이 같은 문제라 영문 철자만 더 챙기면 된다.
따라가기
헷갈리는 자리 — Hamming 의 m 두 개, Parity 의 철자. BEC 대신 ARQ 라고 적으면 뜻은 맞지만 문제가 "재전송 요청 방식"의 이름을 BEC 로 두었으니 보기에 맞춘다.
표준 · 교재 정의(OSI · TCP/IP · IEEE · RFC 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
다음 C 프로그램의 실행 결과를 쓰시오.
답 — E. 글자 수를 센 뒤 끝에서 둘째 글자를 찍는다.
원리 — while 문은 끝표('\0')를 만날 때까지 n 을 하나씩 올리므로, 끝나면 n 은 글자 수다. "REPUBLICOFKOREA" 는 15글자라 n = 15. 첨자는 0 부터라 마지막 글자는 word[n - 1], 그 앞 글자는 word[n - 2] 다. strlen 을 직접 만든 것이라고 보면 된다. ++n 과 n++ 는 여기서 값을 쓰지 않으니 결과가 같다.
따라가기
헷갈리는 자리 — n − 2 를 "끝에서 두 번째"가 아니라 "13번째 글자"로 세다가 하나 어긋나는 것. 첨자와 순번은 1 차이다. 글자 수를 세다 하나 빠뜨리면 R 이 나온다 — REPUBLIC(8) + OF(2) + KOREA(5) = 15 로 묶어 센다. 반복이 끝난 순간 word[n] 은 끝표이므로 n 자체는 글자가 아니라는 것도 같은 함정이다.
복원 코드를 gcc(도커 alpine)로 실행해 같은 출력을 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장 · 변수명이 실제와 다를 수 있다.
인터넷 뱅킹 등에서 매번 새로 생성되는 일회용 비밀번호 인증 방식은? (영문 약자)
답 — OTP. 쓸 때마다 새로 만들어져 한 번만 쓰이는 비밀번호다.
원리 — 고정 비밀번호는 한 번 새면 계속 쓰인다. OTP(One-Time Password)는 시간(30초마다 바뀜)이나 횟수(누를 때마다)에 따라 기기와 서버가 같은 규칙으로 새 번호를 만들어, 훔쳐 봐도 다음엔 쓸 수 없다. 인터넷 뱅킹의 OTP 기기, 앱의 6자리 코드(Google Authenticator), 문자 인증 번호가 다 이것이다. 인증 요소로는 "가진 것"(소유 기반)에 속한다.
따라가기
헷갈리는 자리 — PIN(고정 번호)이나 2FA(방식이 아니라 요소가 둘이라는 뜻)와 섞는 것. "일회용"이면 OTP 다. 영문 약자 세 글자를 답한다. 시간 동기(TOTP)와 이벤트 동기(HOTP) 두 방식이 있다는 것까지 알아 두면 서술형에도 대응된다.
표준 · 교재 정의(암호 · 인증 · 접근 통제 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
비밀번호를 제공하지 않고 제3자 애플리케이션에 접근 권한을 위임하는 개방형 표준 프로토콜은?
답 — OAuth. 비밀번호 대신 권한 토큰을 넘기는 개방형 인가 표준으로, 2023년 3회 2번과 같은 문제다.
원리 — 제3자 앱이 내 계정의 자료를 쓰려 할 때 비밀번호를 주는 대신, 원래 서비스(구글 · 카카오)에 로그인해 "이 앱에 이만큼 허용"을 누르면 서비스가 앱에 제한된 접근 토큰을 준다. 앱은 비밀번호를 모르고 토큰은 범위 · 기간이 정해지며 언제든 취소된다. 이 흐름의 표준이 OAuth(현재 2.0)다. 인증(누구인가)이 아니라 인가(무엇을 허용하나)를 다룬다.
따라가기
헷갈리는 자리 — SAML · OpenID Connect(인증 쪽 표준)와 섞는 것. "권한 위임"이 OAuth 의 표지이고, 같은 문제가 두 회차에 나왔다.
표준 · 교재 정의(암호 · 인증 · 접근 통제 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
접근 통제 정책 3종을 쓰시오: 강제적 / 역할 기반 / 임의적 (영문 약자)
답 — MAC, RBAC, DAC. 강제적 · 역할 기반 · 임의적 접근 통제의 영문 약자다.
원리 — 접근 통제 정책은 규칙을 누가 정하나로 갈린다. 강제적(MAC, Mandatory)은 시스템이 보안 등급으로 강제, 임의적(DAC, Discretionary)은 소유자가 마음대로, 역할 기반(RBAC, Role-Based)은 역할에 권한을 붙인다. 2023년 3회 13번이 설명 → 약자였다면 이 문제는 우리말 이름 → 약자다. 약자의 첫 글자(M 강제, D 임의, R 역할)가 우리말과 짝이다.
따라가기
헷갈리는 자리 — 순서를 문제가 준 대로(강제 · 역할 · 임의) 적어야 한다. RBAC 의 B 를 빼고 RAC 로 적거나 MAC 의 뜻을 Media Access Control 로 적는 것도 오답이다.
표준 · 교재 정의(암호 · 인증 · 접근 통제 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
다음 A, B 테이블과 SQL문을 보고 출력되는 행의 수를 쓰시오.
A 테이블
| NAME |
|---|
| Smith |
| Allen |
| Scott |
B 테이블
| RULE |
|---|
| S% |
| %T% |
답 — 4. 이름 셋 × 규칙 둘 = 여섯 짝 중 LIKE 가 맞는 짝은 Smith 둘, Scott 둘이다.
원리 — CROSS JOIN 은 두 테이블의 모든 짝을 만든다(3 × 2 = 6 행). LIKE 는 무늬 맞추기로, % 는 "아무 글자 0개 이상"이다. 'S%' 는 S 로 시작, '%T%' 는 어디든 T 가 들어 있음이다. 이 문제의 정답 4 는 대소문자를 구분하지 않는 채점(Smith 의 t · Scott 의 tt 가 T 에 맞음)을 전제로 한다 — MySQL · SQL Server 의 기본이 그렇다.
따라가기
헷갈리는 자리 — 대소문자를 구분하면(PostgreSQL · sqlite 기본) %T% 가 하나도 안 맞아 2 가 된다. 시험은 보통 구분하지 않는 쪽으로 낸다는 것을 알고 4 로 적되, 문제에 "대소문자 구분" 문구가 있으면 그것을 따른다. CROSS JOIN 의 행 수 6 을 그대로 적는 것도 오답이다.
표를 sqlite 3.49 에 넣고 같은 SQL 을 실행해 결과를 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 표 · 값이 실제와 다를 수 있다.
다음 SQL문의 실행 결과를 쓰시오. 테이블 A의 데이터가 다음과 같을 때 조회 결과를 구하시오.
A
| COL1 | COL2 |
|---|---|
| 2 | NULL |
| 3 | 6 |
| 2 | 3 |
| NULL | 3 |
| 4 | 5 |
답 — 4. WHERE 로 다섯 행이 다 걸리지만 COUNT(COL2) 는 NULL 을 세지 않아 4 다.
원리 — COUNT(*) 는 행 수를 세고, COUNT(열) 은 그 열이 NULL 이 아닌 행만 센다. NULL 은 "값 없음"이라 개수에 안 들어간다. WHERE 는 COL1 IN (2, 3) 또는 COL2 IN (3, 5) 인 행을 남기는데, NULL 은 어느 IN 에도 맞지 않지만 다른 쪽 조건으로 걸릴 수 있다. 행마다 두 조건을 따로 보고 하나라도 참이면 남긴다.
따라가기
헷갈리는 자리 — COUNT(*) 로 읽어 5 를 적는 것. 괄호 안이 열 이름이면 NULL 을 뺀다. (NULL, 3) 행을 "NULL 이 있으니 제외"로 보는 것 — COL2 = 3 으로 걸린다. NULL 규칙은 두 방향(조건에서는 거짓, 개수에서는 제외) 모두 본다.
표를 sqlite 3.49 에 넣고 같은 SQL 을 실행해 결과를 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 표 · 값이 실제와 다를 수 있다.
다음 Java 프로그램의 빈칸에 들어갈 키워드를 쓰시오.
답 — implements. 클래스가 인터페이스를 따를 때 쓰는 예약어다.
원리 — 인터페이스는 "이런 메서드를 반드시 갖춰라"는 약속 목록이다. 클래스가 그 약속을 지키겠다고 선언하는 말이 implements(구현하다)이고, 그 클래스는 목록의 메서드를 전부 몸통과 함께 만들어야 한다. 반면 클래스가 다른 클래스를 물려받을 때는 extends(확장하다)를 쓴다. 인터페이스가 다른 인터페이스를 물려받을 때도 extends 다. Machine 이 interface 로 선언됐으니 Washer 쪽은 implements 다.
따라가기
헷갈리는 자리 — extends 를 적는 것. 클래스 → 인터페이스는 implements, 클래스 → 클래스와 인터페이스 → 인터페이스는 extends 로 짝을 외운다. 인터페이스 메서드는 기본이 public 이라 구현할 때 public 을 빼면 오류가 나는 것도 같은 묶음의 함정이다.
빈칸에 답을 넣어 JDK 17 로 컴파일해 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장 · 변수명이 실제와 다를 수 있다.
다음 Java 코드의 ①에 들어갈 예약어를 쓰시오.
답 — super. 자식 생성자에서 부모 생성자를 부를 때 쓰는 예약어다.
원리 — Rectangle 에는 인자 없는 생성자가 없고 (width, height) 를 받는 생성자만 있다. 자식 Square 를 만들려면 부모 부분도 만들어져야 하는데, 자바는 부모의 인자 없는 생성자를 몰래 부르므로 그런 생성자가 없으면 컴파일 오류가 난다. 그래서 자식 생성자 첫 줄에 super(side, side) 로 "부모의 저 생성자를 이 값으로 불러라"고 직접 적어야 한다. 정사각형은 가로와 세로가 같으니 side 를 두 번 넘긴다. super(...) 는 반드시 첫 줄이어야 한다.
따라가기
헷갈리는 자리 — this(side, side) 를 적는 것. this(…) 는 같은 클래스의 다른 생성자를 부르는 것인데 Square 에는 두 인자 생성자가 없다. Rectangle(side, side) 처럼 클래스 이름을 적는 것도 오류다 — 생성자 호출은 super 나 this 뿐이다.
빈칸에 답을 넣어 JDK 17 로 컴파일해 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장 · 변수명이 실제와 다를 수 있다.
다음 C 프로그램의 실행 결과를 쓰시오.
답 — 0. 둘째 줄에서 z & z >> 1 이 2 & 1 = 0 이 되고, 그 뒤로는 0 에 무엇을 곱해도 0 이다.
원리 — 한 줄에 연산자가 여럿이면 우선순위가 계산 순서를 정한다. 산술(%) → 시프트(>>) → 비교(<, >) → 비트 AND(&) → 논리 AND(&&) → 삼항(?:) 순이다. 둘째 줄 z & z >> 1 은 시프트가 먼저라 z & (z >> 1) 이다. 셋째 줄은 && 가 삼항보다 먼저 묶여 (x > 5 && z <= 3) ? z * x : z / x 로 읽는다.
따라가기 — x = 7, y = 4.
헷갈리는 자리 — 둘째 줄을 (z & z) >> 1 로 읽어 1 을 얻는 것. 비트 AND 는 시프트보다 나중이다. 셋째 줄에서 조건이 거짓이라고 보고 z / x 로 가도 0 / 7 = 0 이라 답은 같지만, 이유가 다르면 다음 문제에서 틀린다.
복원 코드를 gcc(도커 alpine)로 실행해 같은 출력을 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장 · 변수명이 실제와 다를 수 있다.
다음 관계대수 연산의 결과 릴레이션을 테이블 형태로 쓰시오. 관계 R과 S가 다음과 같을 때 R ÷ S의 결과를 구하시오.
R
| A | B |
|---|---|
| a1 | b1 |
| a1 | b2 |
| a2 | b1 |
S
| B |
|---|
| b1 |
| b2 |
답 — 열 A 하나에 a1 한 행. S 의 모든 값(b1 · b2)과 짝지어진 A 값은 a1 뿐이다.
원리 — 나눗셈 R ÷ S 는 "S 에 있는 모든 값을 전부 가진 것"을 R 에서 찾는 연산이다. R 의 A 값마다 짝지어진 B 값의 집합을 만들고, 그 집합이 S 의 B 값 전체 {b1, b2} 를 포함하면 남긴다. 결과 열은 R 의 열에서 S 의 열을 뺀 것(A)이다. "모든 과목을 수강한 학생" 같은 질문이 나눗셈이다.
따라가기
헷갈리는 자리 — b1 이 있다고 a2 도 넣는 것. "하나라도"가 아니라 "전부"다. 결과 열에 B 를 남기는 것 — 나누는 쪽의 열은 사라진다. 표 꼴로 답하라고 했으니 열 이름 A 를 머리에 적고 그 아래 a1 한 행을 적는다.
표를 놓고 연산 규칙대로 손으로 계산했고 sqlite 3.49 로 같은 결과를 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 표 · 값이 실제와 다를 수 있다.
다음 C 프로그램의 실행 결과를 쓰시오.
답 — 187. 리스트를 11 → 7 → 5 순서로 돌며 sum = sum × 3 + 값 으로 125 를 만들고, 42 와 XOR 한 87 에 100 을 더한다.
원리 — sum = sum * 3 + value 는 "지금까지의 결과를 3배 하고 새 값을 더한다"로, 값을 3진수 자릿수처럼 쌓는 식이다. 사슬은 n3 → n2 → n1(next 대입 두 줄)이라 값 순서는 11 · 7 · 5 다. XOR(^)는 두 수를 2진수로 놓고 자리가 다르면 1, 같으면 0 이다. unsigned 는 음수를 안 쓰는 정수라는 뜻일 뿐 여기선 값에 영향이 없고, %u 로 그대로 찍는다.
따라가기
헷갈리는 자리 — 사슬을 n1 → n2 → n3(5 · 7 · 11)로 돌려 sum 을 5 → 22 → 77 로 만드는 것. cur 의 시작이 n3 이고 n3.next = n2, n2.next = n1 이다. XOR 를 OR(127)나 AND(40)로 계산하는 것도 흔하다 — "다르면 1"이다.
복원 코드를 gcc(도커 alpine)로 실행해 같은 출력을 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장 · 변수명이 실제와 다를 수 있다.
관계형 DB 용어: ① 행에 해당 ② 실제 값들의 집합 ③ 튜플의 개수
답 — ① 튜플 ② 릴레이션 인스턴스 ③ 카디널리티. 2023년 1회 12번과 같은 용어 문제다.
원리 — 관계형 모델은 표 = 릴레이션, 열 = 속성, 행 = 튜플로 부른다. 표의 틀(열 이름 · 자료형)은 릴레이션 스키마, 그 틀에 지금 들어 있는 행들의 집합은 릴레이션 인스턴스다. 행의 수는 카디널리티, 열의 수는 차수다. 같은 문제가 두 회차에 나온 것은 이 용어 묶음이 얼마나 자주 나오는지 말해 준다.
따라가기
헷갈리는 자리 — ② 에 스키마 · 릴레이션만 적는 것. "실제 값"이면 인스턴스까지 적어야 한다. ③ 을 차수(degree)로 적는 것 — 차수는 열 수다. 같은 문제가 2년 뒤에 그대로 나온 만큼, 튜플 · 속성 · 릴레이션 스키마 · 인스턴스 · 카디널리티 · 차수 여섯 낱말은 정의를 한 줄씩 통째로 외운다.
교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
테스트 케이스의 3대 구성 요소: ① 테스트 실행 전 만족해야 할 조건 ② 입력하는 값 ③ 기대하는 출력
답 — ① 테스트 조건 ② 테스트 데이터 ③ 예상 결과. 테스트 케이스는 "어떤 상황에서 · 무엇을 넣으면 · 무엇이 나와야 하나" 세 가지로 이루어진다.
원리 — 테스트 케이스는 검사를 재현 가능하게 적어 둔 명세다. 테스트 조건(사전 조건)은 실행 전에 갖춰야 할 상태다 — "로그인된 상태, 잔액 10,000원". 테스트 데이터는 실제로 넣는 입력값이다 — "출금 3,000원". 예상 결과는 명세대로라면 나와야 할 출력이다 — "잔액 7,000원 표시". 실행한 뒤 실제 결과를 예상 결과와 비교해 같으면 통과, 다르면 결함이다. 예상 결과를 미리 적어 두지 않으면 "맞는지" 판정할 기준이 없어 테스트가 아니라 그냥 실행이 된다.
따라가기
헷갈리는 자리 — ①을 "테스트 환경"이나 "사전 조건"으로 적는 것. 사전 조건은 뜻이 같아 정답 처리될 가능성이 크지만 교재 표준 용어는 테스트 조건이다. 테스트 케이스에는 이 셋 외에 식별자 · 실제 결과 · 성공 여부 칸이 더 있지만 "3대 구성 요소"는 이 셋이다.
표준 · 교재 정의(ISTQB 용어 · 커버리지 6단계 · 테스트 수준)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.
다음 Python 프로그램의 출력에서 빈칸 ①부터 ⑧에 들어갈 값을 순서대로 쓰시오.
[출력] {0: (①, ②), 1: (③, ④), 2: (⑤, ⑥), 3: (⑦, ⑧)}
답 — ① 15 ② 5 ③ 10 ④ 3 ⑤ 18 ⑥ 5 ⑦ 9 ⑧ 2. 안쪽 리스트마다 (합, 길이) 튜플을 만들어 첨자를 키로 넣은 딕셔너리다.
원리 — enumerate(data) 는 리스트를 돌면서 (첨자, 원소) 짝을 준다. 그래서 index 는 0 · 1 · 2 · 3, values 는 안쪽 리스트다. (sum(values), len(values)) 는 합과 개수를 튜플로 묶은 것이고, 튜플은 소괄호로 찍힌다. 딕셔너리는 넣은 순서대로 찍히므로 출력은 키 0 부터다. 빈칸은 각 튜플의 합이 먼저, 길이가 나중이다.
따라가기
헷갈리는 자리 — 튜플 안의 순서를 (길이, 합)으로 바꿔 적는 것. 코드에서 sum 이 앞이다. 덧셈 실수(셋째 줄 4 + 4 + 1 + 5 + 4 = 18)를 한 칸이라도 하면 그 칸만 틀리므로 여덟 칸을 하나씩 검산한다. 답은 여덟 값을 순서대로 적는다.
복원 코드를 Python 3.12 로 실행해 같은 출력을 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장 · 변수명이 실제와 다를 수 있다.
왜 이걸 하나 — 점수보다 어느 장으로 돌아가느냐가 결과다. 문항마다 가는 장이 정해져 있다.
코드 8문항 중 C 4 · Java 3 · Python 1 이다. 15번은 삼항 · 비트 AND · 시프트 · && 가 한 줄씩 섞여 있어 연산자 우선순위 표를 옆에 두고 푼다. z & z >> 1 은 시프트가 먼저라 2 & 1 = 0 이 되고, 마지막 줄은 조건이 참이라 0 × 7 = 0 이다. 17번은 11 · 7 · 5 를 sum * 3 + value 로 모아 125, XOR 42 로 87, 100 을 더해 187.
5번 enum 은 Word.B.name().length() 가 1 이라 values()[1] 이 B, getText 가 AB 다. 7번은 길이를 세고 뒤에서 둘째 글자 E. 20번 Python 은 빈칸 여덟 개가 (합, 길이) 튜플이라 칸마다 부분 점수가 있다.
용어 12문항은 보안 3(OTP · OAuth · MAC/RBAC/DAC) · SW공학 3(패키지 다이어그램 · 조건 커버리지 · 테스트 케이스 3요소) · DB 2(R ÷ S · 용어 3칸) · SQL 2 · 네트워크 1(오류 제어 5칸) · 리눅스 명령 4칸이다. 1번 · 4번 · 18번은 2023년 3회 · 2회 · 1회에 나온 것이 그대로 다시 나온 문항이다.
틀린 문항의 「가는 장」을 열면 그 문항이 04절에 그대로 있고, 앞뒤로 같은 꼴의 문항이 붙어 있다. 몰라서 틀렸으면 그 장 03절부터, 알았는데 틀렸으면 05절만 읽는다. 판정 기준은 E01 의 03절 표와 같다.
| 문항 | 분야 | 가는 장 | 무엇을 묻나 |
|---|---|---|---|
| 1 | UML | E15 | 패키지 다이어그램 |
| 2 | C | E02 | 구조체 배열 원소의 문자열 포인터 + offset |
| 3 | 리눅스 | E16 | pwd · ls · cd · cp |
| 4 | 테스트 | E18 | 조건 커버리지 |
| 5 | Java | E06 | enum values()[…] 과 name().length() |
| 6 | 네트워크 | E11 | 오류 제어 용어 5칸 매칭 |
| 7 | C | E03 | 길이 세고 뒤에서 둘째 글자 |
| 8 | 보안 | E13 | 일회용 비밀번호 OTP |
| 9 | 보안 | E13 | OAuth |
| 10 | 보안 | E13 | MAC · RBAC · DAC 약자 |
| 11 | SQL | E08 | CROSS JOIN + LIKE 패턴 행 수 |
| 12 | SQL | E08 | COUNT(COL2) 는 NULL 을 안 센다 |
| 13 | Java | E05 | implements |
| 14 | Java | E05 | super(side, side) |
| 15 | C | E04 | 삼항 · 비트 AND · 시프트 우선순위 |
| 16 | DB | E10 | R ÷ S 나눗셈 결과 |
| 17 | C | E04 | 연결 리스트 순회 sum*3 과 XOR |
| 18 | DB | E10 | 튜플 · 릴레이션 인스턴스 · 카디널리티 |
| 19 | 테스트 | E18 | 테스트 케이스 3요소 |
| 20 | Python | E07 | enumerate 로 (합, 길이) 튜플 딕셔너리 |
| 문항 | 왜 갈리나 |
|---|---|
| 11번 | Smith · Allen · Scott × S% · %T%. Smith 는 둘 다, Allen 은 %T% 아님, Scott 은 둘 다 → 4 |
| 12번 | COL1 IN (2, 3) OR COL2 IN (3, 5) 로 5행 전부 걸리지만 COUNT(COL2) 는 NULL 을 안 세 4 |
| 15번 | 시프트 → 비트 AND → 비교 → && → 삼항 순. z 가 0 이 되면 z * x 도 z / x 도 0 |
| 16번 | R ÷ S 는 S 의 b1 · b2 를 전부 가진 A. a1 뿐이다. 열 이름 A 까지 표로 적는다 |
채점 결과는 오답노트에 회차별 점수와 틀린 문항 목록으로 모인다. 세트를 하나 끝낼 때마다 거기서 같은 장에서 반복해서 틀리는지를 본다. 두 세트에서 같은 장이 나오면 그 장의 06절 훈련을 그날 5문항 푼다.
왜 이걸 하나 — 세트의 결과는 다음에 열 장의 이름이어야 한다.