연습문제 Part 1
다음 <Product_A>, <Product_B> 테이블을 참고하여 SQL문의 실행 결과를 쓰시오.
<Product_A>
ID | NAME
-----|----------
S1 | Monitor
S2 | Mouse
S3 | Keyboard
<Product_B>
ID | PRICE
-----|------
S1 | 200
S2 | 15
S4 | 50
S5 | 80
SELECT SUM(PRICE) AS total_sum
FROM Product_B
WHERE ID NOT IN (SELECT ID FROM Product_A);
다음 JAVA 프로그램의 실행 결과를 쓰시오.
public class Polymorphism {
public static class Base {
public int calc(int n) { return n * 2; }
public static String getName() { return "Base"; }
}
public static class Derived extends Base {
public int calc(int n) { return n * 3; }
public String calc(String s) { return s + "!"; }
public static String getName() { return "Derived"; }
}
public static void main(String[] args) {
Base obj = new Derived();
System.out.println(obj.calc(5) + obj.getName());
}
}
현재 작업 디렉터리가 다음과 같을 때, 제시된 상대 경로를 절대 경로로 변환하여 쓰시오.
[현재 디렉터리]
/usr/local/bin
[상대 경로]
../../etc/config
다음 설명에 해당하는 리눅스 명령어를 <보기>에서 골라 쓰시오.
cat rm rmdir mkdir cp mv tail head more who
② 디렉터리를 삭제할 때 사용하는 명령어이다.
다음 Python 프로그램의 실행 결과를 쓰시오.
items = ['apple', 'banana', 'cherry', 'date', 'apple']
target = items.count('apple')
items.pop(target)
last_one = items.pop()
new_items = ['egg', 'flour']
items.extend(new_items)
items.reverse()
print(items)
연습문제 Part 2
다음은 ‘사용자A’에게 <STAFF> 테이블에 대한 SELECT 권한을 부여하고, 해당 사용자가 다른 사람에게도 권한을 부여할 수 있도록 하는 SQL문이다. 괄호(①, ②)에 알맞은 항목을 쓰시오.
( ① ) SELECT ON STAFF TO 사용자A ( ② );
다음 JAVA 프로그램의 실행 결과를 쓰시오.
public class Test {
public static class Node {
public int value;
public Node(int value) {
this.value = value;
}
}
public static void main(String[] args) {
Node n1 = new Node(10);
Node n2 = new Node(20);
Node n3 = new Node(30);
Node[] nodes = {n1, n2, n3};
Node temp = nodes[0];
nodes[0] = nodes[2];
nodes[2] = temp;
nodes[1].value = nodes[0].value;
System.out.println(n1.value + "x" + n2.value + "y" + n3.value);
}
}
다음 Python 프로그램의 실행 결과를 쓰시오.
scores = [
[10, 20],
[30, 40],
[50, 60]
]
db = {}
idx = 1
for row in scores:
sum_val = 0
for val in row:
sum_val += val
db[idx] = sum_val
idx += 1
result = db.get(2)
print(result)
다음은 <BOOK_LIST> 테이블에서 ‘도서명’이 “데이터”로 시작하는 항목들을 ‘출판일’ 기준 내림차순으로 정렬하는 SQL문이다. 괄호(①, ②)에 알맞은 항목을 쓰시오.
SELECT * FROM BOOK_LIST
WHERE 도서명 LIKE ( ① )
ORDER BY 출판일 ( ② );
‘setup.sh’ 파일에 대해 다음과 같은 권한을 8진법 숫자를 사용하여 한 줄의 명령어로 부여하시오.
소유자(User): 읽기, 실행
그룹(Group): 읽기
기타(Others): 실행
연습문제 Part 3
다음 Python 프로그램의 실행 결과를 쓰시오.
def func(n):
if n <= 1:
return 1
else:
return n + func(n - 1)
print(func(4))
<STUDENT(STU_ID, STU_NAME, MAJOR)> 테이블에 학번 ‘202601’, 이름 ‘홍길동’, 전공 ‘AI’인 데이터를 삽입하는 SQL문을 작성하시오.
다음 Java 코드를 분석하여 각 물음에 답하시오.
1 | public class ExceptionTest {
2 | public static void main(String[] args) {
3 | int x = 100, y = 0, z = 5;
4 | int res1, res2;
5 | try {
6 | res1 = x / y;
7 | System.out.print(x);
8 | }
9 | catch (NumberFormatException e) {
10 | res2 = x / z;
11 | System.out.print(res2);
12 | }
13 | finally {
14 | System.out.print(" done" + z);
15 | }
16 | }
17 | }
② catch문의 예외 타입을 'ArithmeticException'으로 수정했을 때의 출력 결과를 쓰시오.
다음 작업 환경에서 제시된 상대 경로의 절대 경로를 쓰시오.
[작업 폴더]
D:/Work/Project/Source
[상대 경로]
../Include/header.h
다음 설명에 해당하는 리눅스 명령어를 <보기>에서 골라 쓰시오.
pwd chmod fsck rm cp mv ls touch grep man
② 파일 시스템의 무결성을 점검하고 오류를 수정하는 명령어이다.
연습문제 Part 4
다음 <Stock> 테이블을 보고 SQL문의 실행 결과(행의 개수)를 쓰시오.
<Stock>
CODE | QTY | PRICE
-----|-----|------
A1 | 50 | 1000
A2 | 10 | 5000
A3 | 100 | 2000
A4 | 5 | 8000
A5 | 80 | 1500
SELECT COUNT(*) FROM Stock
WHERE QTY > 40 AND PRICE >= 1500 OR QTY <= 5;
문자 형태의 숫자를 정수로 변환하여 계산하는 다음 Java 코드의 괄호(①)에 들어갈 공통 메소드와 최종 출력 결과를 쓰시오.
public class Main {
public static void main(String[] args) {
char c1 = '4';
int v1 = Character.( ① )(c1);
char c2 = '+';
int v2 = Character.( ① )(c2);
char c3 = '8';
int v3 = Character.( ① )(c3);
System.out.print(v1 * v2 + v3);
}
}
다음 Python 프로그램의 실행 결과를 쓰시오.
def process(a, b, res):
if a >= b:
return res
a += 2
res += a
return process(a, b, res)
x, y, z = 0, 4, 0
z = process(x, y, z)
print('x=', x, 'z=', z)
<MEMBER> 테이블에서 ‘거주지’ 컬럼의 값을 중복 없이 한 번씩만 출력하는 SQL문을 작성하시오.
다음 Java 프로그램의 실행 결과를 쓰시오.
public class FormatTest {
public static void main(String[] args) {
double val = 12.5678;
System.out.printf("%.1f", val);
}
}
연습문제 Part 5
다음 Python 프로그램의 실행 결과를 쓰시오.
def sort_logic(data):
data = list(data)
n = len(data)
for i in range(n):
for j in range(i + 1, n):
if data[i].upper() < data[j].upper():
data[i], data[j] = data[j], data[i]
return "".join(data)
word = "pAsSCal"
print(sort_logic(word))
다음 조건에 맞는 SQL문을 완성하기 위해 괄호(①~③)에 들어갈 키워드를 쓰시오.
• <MEMBER> 테이블에서 나이가 20세 이상( ① ) 30세 이하인 회원을 검색한다.
• 이름을 기준으로 오름차순( ② ) 정렬한다.
• 주소가 "서울"로 시작하지 않는( ③ ) 회원을 필터링한다.
SELECT * FROM MEMBER
WHERE AGE BETWEEN 20 ( ① ) 30
AND ADDRESS ( ③ ) '서울%'
ORDER BY NAME ( ② );
다음은 <EMPLOYEE> 테이블에서 SALARY가 5000 이상인 직원의 ID, NAME을 추출하여 <HIGH_PAY>라는 이름의 뷰를 생성하는 SQL문이다. 괄호(①~③)에 알맞은 키워드를 쓰시오.
CREATE VIEW HIGH_PAY
( ① ) ( ② ) ID, NAME
FROM EMPLOYEE
( ③ ) SALARY >= 5000;
다음 Java 코드의 실행 순서를 Line 번호로 나열하시오. (예: 1, 2, 3…)
1 | public class OrderTest {
2 | public static void main(String[] args) {
3 | int[] arr = {1, 2};
4 | try {
5 | int n = 5 / 0;
6 | System.out.println(arr[5]);
7 | }
8 | catch (ArithmeticException e) {
9 | System.out.println("Error 1");
10 | }
11 | catch (ArrayIndexOutOfBoundsException e) {
12 | System.out.println("Error 2");
13 | }
14 | finally {
15 | System.out.println("End");
16 | }
17 | }
18 | }
다음 Python 프로그램의 실행 결과를 쓰시오.
text_list = "python-is-easy".split("-")
limit = 10
val_list = list(range(1, limit, 3))
val_list.remove(4)
print(text_list[0].find('y') + val_list[1])
핵심 요약
SQL 핵심 포인트
- NOT IN (서브쿼리) : 서브쿼리 결과에 포함되지 않는 행 검색, SUM/AVG 등 집계 함수와 결합 가능
- GRANT ~ WITH GRANT OPTION : 권한 부여 시 재부여 권한까지 함께 부여
- LIKE :
%(0개 이상 문자),_(정확히 1개 문자), NOT LIKE로 부정 검색 - INSERT INTO ~ VALUES : 테이블에 새로운 튜플 삽입
- AND/OR 우선순위 : AND가 OR보다 먼저 평가, 필요 시 괄호로 명시
- DISTINCT : 중복 행 제거하여 고유 값만 출력
- CREATE VIEW ~ AS SELECT : 가상 테이블(뷰) 생성, WHERE로 조건 지정
- BETWEEN A AND B : A 이상 B 이하 (경계값 포함)
Java 핵심 포인트
- static 메서드 vs 인스턴스 메서드 : static은 참조 타입(하이딩), 인스턴스는 실제 객체 타입(오버라이딩)
- 배열 참조 교환 : 배열 요소의 참조를 교환해도 원본 객체(n1, n2, n3) 자체는 변하지 않음
- try-catch-finally : 예외 타입이 일치해야 catch 실행, finally는 항상 실행
- Character.getNumericValue() : 숫자 문자는 해당 정수 반환, 비숫자 문자는 -1 반환
- printf("%.nf") : 소수점 이하 n자리까지 반올림 출력
- 예외 처리 실행 순서 : try → 예외 발생 → 일치하는 catch → finally 순으로 실행
Python 핵심 포인트
- 리스트 메서드 :
count()(개수),pop(i)(제거·반환),extend()(확장),reverse()(역순) - dict.get(key) : 딕셔너리에서 key에 해당하는 value 반환 (없으면 None)
- 재귀 함수 : 종료 조건과 반환값 누적 패턴 이해, 매개변수 전달 시 원본 불변 (정수)
- 문자열 정렬 :
.upper()로 비교 기준 통일, 교환 시 원래 대소문자 유지 - split() / find() : 구분자 기준 분리, 문자열 내 첫 번째 인덱스 반환
- range(start, stop, step) : start부터 stop 미만까지 step 간격의 수열 생성
경로 & Linux 핵심 포인트
- 상대 경로 → 절대 경로 :
..를 만나면 한 단계 위로 이동, 남은 경로를 이어 붙임 - Windows 경로 : 드라이브 문자(D:)로 시작, 구분자는
/또는\사용 - pwd : 현재 작업 디렉터리 출력, fsck : 파일 시스템 무결성 점검
- cat : 파일 내용 출력, rmdir : 빈 디렉터리 삭제
- chmod (8진법) : 읽기(4)+쓰기(2)+실행(1)을 소유자/그룹/기타 순으로 지정