
1. (Java) ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค.
public class Main{
static String[] s = new String[3];
static void func(String[]s, int size){
for(int i=1; i<size; i++){
if(s[i-1].equals(s[i])){
System.out.print("O");
}else{
System.out.print("N");
}
}
for (String m : s){
System.out.print(m);
}
}
public static void main(String[] args){
s[0] = "A";
s[1] = "A";
s[2] = new String("A");
func(s, 3);
}
}
์ ๋ต: OOAAA
์ด ๋ฌธ์ ๋ ๋ฌธ์์ด ๋น๊ต์์ ์์ฃผ ๋์ค๋ equals() vs == ๊ฐ๋
์ ์ ์ดํดํ๊ณ ์์ด์ผ ํ ์ ์๋ ๋ฌธ์ ์ด๋ค.
equals()๋ ๋ฌธ์์ด์ ๋ด์ฉ์ ๋น๊ตํ๋ฏ๋ก "A"์ new String("A")๋ ๊ฐ๋ค๊ณ ๋ณธ๋ค.
๋ฐ๋ฉด ==๋ ์ฃผ์๋ฅผ ๋น๊ตํ๋ฏ๋ก ์ด ๊ฒฝ์ฐ false๊ฐ ๋ ์ ์๋ค. (์ด ์ฝ๋์์๋ ์ฌ์ฉ ์ ๋จ)
static String[] s = new String[3];
- ๊ธธ์ด 3์ง๋ฆฌ ๋ฌธ์์ด ๋ฐฐ์ด s ์ ์ธํ๊ธฐ
s[0] = "A";
s[1] = "A";
s[2] = new String("A");
- s[0], s[1]์ ๋ฆฌํฐ๋ด ๋ฌธ์์ด "A" โ ์๋ฐ์์๋ ๊ฐ์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ด๋ฉด ๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค (String pool)
- s[2]๋ new String("A") โ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ "A"๋ฅผ ์์ฑํ๋ค โ ๋ค๋ฅธ ์ฃผ์
ํจ์ func(s, 3)
for(int i=1; i<size; i++){
if(s[i-1].equals(s[i])){
System.out.print("O");
} else {
System.out.print("N");
}
}
- s[i-1].equals(s[i])๋ ๊ฐ(๋ด์ฉ) ๋น๊ต
- s[0].equals(s[1]) โ "A".equals("A") โ โ true โ O
- s[1].equals(s[2]) โ "A".equals(new String("A")) โ โ true โ O
- ์ถ๋ ฅ: OO
for (String m : s){
System.out.print(m);
}
- ๋ฐฐ์ด ์ ์ฒด ์ถ๋ ฅ โ "A", "A", "A"
- ์ถ๋ ฅ: AAA
์ต์ข ์ถ๋ ฅ ๊ฒฐ๊ณผ
OOAAA
2. ๋ค์์ ํ์ด์ฌ์ ๋ํ ๋ฌธ์ ์ด๋ค. ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค.
def func(lst):
for i in range(len(lst) // 2):
lst[i], lst[-i-1] = lst[-i-1], lst[i]
lst = [1, 2, 3, 4, 5, 6]
func(lst)
print(sum(lst[::2]) - sum(lst[1::2]))
์ ๋ต:3
len(lst) = 6, len(lst) // 2 = 3 # ์ ์๋ถ๋ง
for ๋ฃจํ๋ [0, 1, 2] # 3 ์๊น์ง ๋์๊ฐ
i = 0์ผ๋, lst[0]๊ณผ lst[-1] ๊ตํ lst = [6,2,3,4,5,1]
i = 1์ผ๋, lst[1]๊ณผ lst[-2] ๊ตํ lst = [6,5,3,4,2,1]
i = 2์ผ๋, lst[2]๊ณผ lst[-3] ๊ตํ lst = [6,5,4,3,2,1]
print(sum(lst[::2]) - sum(lst[1::2))
sum(iterable) ํด๋น ์ดํฐ๋ฌ๋ธ ๋ด์ ์์๋ฅผ ๋ชจ๋ ํฉํ๋ค.
์ง์ ์ธ๋ฑ์ค์ ๊ฐ(6,4,2) - ํ์์ธ๋ฑ์ค์ ๊ฐ๋ค(5,3,1)
12 - 9 = 3
3. ์๋์ employeeํ ์ด๋ธ๊ณผ projectํ ์ด๋ธ์ ์ฐธ๊ณ ํ์ฌ ๋ณด๊ธฐ์ SQL๋ช ๋ น์ด์ ์๋ง๋ ์ถ๋ ฅ ๊ฐ์ ์์ฑํ์์ค.

SELECT
count(*)
FROM employee AS e JOIN project AS p ON e.project_id = p.project_id
WHERE p.name IN (
SELECT name FROM project p WHERE p.project_id IN (
SELECT project_id FROM employee GROUP BY project_id HAVING count(*) < 2
)
);
์ ๋ต : 1
4. ๋ค์์ ์ด์์ฒด์ ํ์ด์ง ์์๋ฅผ ์ฐธ๊ณ ํ์ฌ ํ ๋น๋ ํ๋ ์์ ์๊ฐ 3๊ฐ์ผ ๋ LRU ์๊ณ ๋ฆฌ์ฆ์ ํ์ด์ง ๋ถ์ฌ ํ์๋ฅผ ์์ฑํ์์ค.
ํ์ด์ง ์ฐธ์กฐ ์์ : 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1

์ ๋ต: 12
5. ๋ค์์ ๋คํธ์ํฌ ์ทจ์ฝ์ ์ ๋ํ ๋ฌธ์ ์ด๋ค. ์๋ง๋ ์ฉ์ด๋ฅผ ์์ฑํ์์ค.
- IP๋ ICMP์ ํน์ฑ์ ์ ์ฉํ์ฌ ์์ฒญ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ํ ์ฌ์ดํธ์ ์ง์ค์ ์ผ๋ก ๋ณด๋์ผ๋ก์จ ๋คํธ์ํฌ์ ์ผ๋ถ๋ฅผ ๋ถ๋ฅ ์ํ๋ก ๋ง๋๋ ๊ณต๊ฒฉ์ด๋ค.
- ์ฌ๋ฌ ํธ์คํธ๊ฐ ํน์ ๋์์๊ฒ ๋ค๋์ ICMP Echo Reply ๋ฅผ ๋ณด๋ด๊ฒ ํ์ฌ ์๋น์ค๊ฑฐ๋ถ(DoS)๋ฅผ ์ ๋ฐ์ํค๋ ๋ณด์๊ณต๊ฒฉ์ด๋ค.
- ๊ณต๊ฒฉ ๋์ ํธ์คํธ๋ ๋ค๋์ผ๋ก ์ ์ ๋๋ ํจํท์ผ๋ก ์ธํด ์๋น์ค ๋ถ๋ฅ ์ํ์ ๋น ์ง๋ค.
์ ๋ต: ์ค๋จธํ(Smurfing)
6. GoF ๋์์ธ ํจํด์ ๊ด๋ จํด์ ๊ดํธ์์ ์๋ง๋ ์ฉ์ด๋ฅผ ์์ฑํ์์ค.
- ( ) ํจํด์ ํด๋์ค๋ ๊ฐ์ฒด๋ค์ด ์๋ก ์ํธ์์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ ์ฑ ์ ๋ถ๋ฐฐ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ํจํด์ด๋ค.
- ( ) ํจํด์ ๊ฐ์ฒด๋ค ๊ฐ์ ํต์ ๋ฐฉ๋ฒ์ ์ ์ํ๊ณ ์๊ณ ๋ฆฌ์ฆ์ ์บก์ํํ์ฌ ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๋ค.
- ( ) ํจํด์ Chain of Responsibility๋ Command ๋๋ Observer ํจํด์ด ์๋ค.
ํ์
7. (C์ธ์ด) ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค.
#include <stdio.h>
int func(){
static int x =0;
x+=2;
return x;
}
int main(){
int x = 1;
int sum=0;
for(int i=0;i<4;i++) {
x++;
sum+=func();
}
printf("%d", sum);
return 0;
}
์ ๋ต : 20
- func() ํจ์ ์์ ๋ณ์ x๋ static์ด๊ธฐ ๋๋ฌธ์ ํ ๋ฒ๋ง ์ด๊ธฐํ๋๋ฉฐ ํจ์๊ฐ ํธ์ถ๋ ๋๋ง๋ค ๊ฐ์ ์ ์งํ๋ค.
- main() ํจ์ ์์ x๋ ๋ณ๊ฐ์ ๋ณ์์ ๋๋ค. ์ด x++๋ ๋ฐ๋ณต๋ง๋ค ์ฆ๊ฐํ์ง๋ง ๊ฒฐ๊ณผ๊ฐ๊ณผ๋ ์๊ด์๋ค.
- func()๋ ํธ์ถ๋ ๋๋ง๋ค x += 2๋ฅผ ํ๊ณ ํ์ฌ ๊ฐ์ ๋ฐํํ๋ค.
func() ๋ด๋ถ์ static ๋ณ์ x์ ๋ณํ๋ง ๋ณด๋ฉด ๋๋ค.
- 1st call: x = 0 + 2 = 2 โ return 2
- 2nd call: x = 2 + 2 = 4 โ return 4
- 3rd call: x = 4 + 2 = 6 โ return 6
- 4th call: x = 6 + 2 = 8 โ return 8
๋ฐ๋ผ์ sum = 2 + 4 + 6 + 8 = 20
8. ๋ค์์ ๋ฌด๊ฒฐ์ฑ์ ์ฝ์กฐ๊ฑด์ ๋ํ ๋ฌธ์ ์ด๋ค. ์๋ ํ์์ ์ด๋ ํ ( ) ๋ฌด๊ฒฐ์ฑ์ ์๋ฐํ์๋์ง ์์ฑํ์์ค.

์ ๋ต : ๊ฐ์ฒด
๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ ์๋ฐ (Entity Integrity Violation)
๐ ๊ธฐ๋ณธํค(PK)๊ฐ null์ด๊ฑฐ๋ ์ค๋ณต๋ ๋ ๋ฐ์ํ๋ ์ค๋ฅ์ด๋ค.
ํ๋ง๋๋ก ์์ฝํ๋ฉด "๊ธฐ๋ณธํค๋ ๋น์๋ ์๋, ๊ฒน์น ์๋ ์๋ค."
9. ๋ค์์ URL ๊ตฌ์กฐ์ ๊ดํ ๋ฌธ์ ์ด๋ค . ์๋ ๋ณด๊ธฐ์ ์์๋๋ก URL์ ํด๋นํ๋ ๋ฒํธ๋ฅผ ์์ฑํ์์ค.

- query : ์๋ฒ์ ์ ๋ฌํ ์ถ๊ฐ ๋ฐ์ดํฐ
- path : ์๋ฒ ๋ด์ ํน์ ์์์ ๊ฐ๋ฆฌํค๋ ๊ฒฝ๋ก
- scheme : ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ด๋ ํ๋กํ ์ฝ
- authority : ์ฌ์ฉ์ ์ ๋ณด, ํธ์คํธ๋ช , ํฌํธ ๋ฒํธ
- fragment : ํน์ ๋ฌธ์ ๋ด์ ์์น
์ ๋ต : 43125
10. (Python) ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค.
def func(value):
if type(value) == type(100): # ์ ์ํ
return 100
elif type(value) == type(""): # ๋ฌธ์์ด
return len(value)
else:
return 20 # ๊ทธ ์ธ์ ํ์
a = '100.0' # ๋ฌธ์์ด
b = 100.0 # ์ค์ (float)
c = (100, 200) # ํํ
print(func(a) + func(b) + func(c))
์ ๋ต : 45
a๋ ๋ฌธ์์ด์ด๋๊น len('100.0') ํด์ 5
b๋ ์ค์ํ์ด๋ผ์ else ๋ธ๋ญ์ผ๋ก ๊ฐ์ 20
c๋ ํํํ์ด๋ฏ๋ก else ๋ธ๋ญ์ผ๋ก ๊ฐ์ 20 ๋ฆฌํด
์ด ํฉ์ 5 + 20 + 20 = 45
11. (Java) ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค.
public class Main{
public static void main(String[] args){
Base a = new Derivate();
Derivate b = new Derivate();
System.out.print(a.getX() + a.x + b.getX() + b.x);
}
}
class Base{
int x = 3;
int getX(){
return x * 2;
}
}
class Derivate extends Base{
int x = 7;
int getX(){
return x * 3;
}
}
์ ๋ต : 52
- ํ๋(๋ณ์)๋ ์ค๋ฒ๋ผ์ด๋ฉ๋์ง ์๋๋ค. โ ํ๋๋ ์ ์ธ๋ ํ์ ์ ๋ฐ๋ผ ์ ๊ทผํ๋ค.
- ๋ฉ์๋๋ ์ค๋ฒ๋ผ์ด๋ฉ๋๋ค. โ ๋ฉ์๋๋ ์ค์ ๊ฐ์ฒด ํ์ ์ ๋ฐ๋ผ ํธ์ถ๋๋ค.
Base a = new Derivate();
Derivate b = new Derivate();
- a๋ Base ํ์ ์ด์ง๋ง Derivate ๊ฐ์ฒด ์ฐธ์กฐ
- b๋ Derivate ํ์ ์ด๊ณ Derivate ๊ฐ์ฒด ์ฐธ์กฐ
System.out.print(
a.getX() // ๋ฉ์๋๋ ์ค๋ฒ๋ผ์ด๋ฉ โ Derivate.getX() โ 7 * 3 = 21
+ a.x // ํ๋๋ Base ํ์
๊ธฐ์ค โ Base.x = 3
+ b.getX() // Derivate.getX() โ 7 * 3 = 21
+ b.x // Derivate ํ์
๊ธฐ์ค โ Derivate.x = 7
);
- a.getX() = 21
- a.x = 3
- b.getX() = 21
- b.x = 7
ํฉ๊ณ = 21 + 3 + 21 + 7 = 52
12. (C์ธ์ด) ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค.
#include <stdio.h>
struct Node {
int value;
struct Node* next;
};
void func(struct Node* node){
while(node != NULL && node->next != NULL){
int t = node->value;
node->value = node->next->value;
node->next->value = t;
node = node->next->next;
}
}
int main(){
struct Node n1 = {1, NULL};
struct Node n2 = {2, NULL};
struct Node n3 = {3, NULL};
n1.next = &n3;
n3.next = &n2;
func(&n1);
struct Node* current = &n1;
while(current != NULL){
printf("%d", current->value);
current = current->next;
}
return 0;
}
์ ๋ต : 312
[๊ตฌ์กฐ์ฒด ์ ์ธ]
struct Node {
int value;
struct Node* next;
};
struct Node n1 = {1, NULL};
struct Node n2 = {2, NULL};
struct Node n3 = {3, NULL};
n1.next = &n3;
n3.next = &n2;
๊ตฌ์กฐ์ฒด ์ ์ ํ ๋ฉ์ธํจ์์์ ๋ ธ๋ ์ธ ๊ฐ๋ฅผ ์ ์ํ๊ณ ์๋ค.
[์ฐ๊ฒฐ๊ตฌ์กฐ]
n1 (1) โ n3 (3) โ n2 (2) โ NULL
[func ํจ์ ๋ก์ง]
void func(struct Node* node){
while(node != NULL && node->next != NULL){
int t = node->value;
node->value = node->next->value;
node->next->value = t;
node = node->next->next;
}
}
์ธ์ ํ ๋ ๋ ธ๋์ ๊ฐ์ ๋ฐ๊พธ๊ณ ๊ทธ ๋ค์ ๋ ์นธ ๊ฑด๋๋ฐ๊ธฐ
[โ๏ธ func(&n1) ์คํ ํ๋ฆ]
n1 (1) โ n3 (3) โ n2 (2)
โ ์ฒซ๋ฒ์งธ ๋ฐ๋ณต (node = n1)
- node = n1, node->next = n3
- Swap n1.value โ n3.value โ n1 = 3, n3 = 1
- node = node->next->next โ node = n2
โ ๋ ๋ฒ์งธ 2nd ๋ฐ๋ณต (node = n2)
- node = n2, but node->next = NULL โ ๋ฃจํ ์ข ๋ฃ
์ต์ข ์ฐ๊ฒฐ ์ํ
n1.value = 3
n1.next.value = 1
n1.next.next.value = 2
์ถ๋ ฅ ์์: 3 1 2
13. ๋ค์์ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง์ ๋ํ ๋ฌธ์ ์ด๋ค. ์๋ ๋ด์ฉ์ ์๋ง๋ ๋ต์ ๋ณด๊ธฐ์์ ๊ณจ๋ผ ์์ฑํ์์ค.
1. ํ
์คํธ๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ๋ฌธ์ฅ์ ์ต์ํ ํ ๋ฒ์ฉ ์คํํ๋์ง๋ฅผ ์ธก์
2. ํ๋ก๊ทธ๋จ ๋ด์ ๋ชจ๋ ๋ถ๊ธฐ(์กฐ๊ฑด๋ฌธ)์ ๊ฐ ๋ถ๊ธฐ๋ฅผ ์ต์ํ ํ ๋ฒ์ฉ ์คํํ๋์ง๋ฅผ ์ธก์
3. ๋ณตํฉ ์กฐ๊ฑด ๋ด์ ๊ฐ ๊ฐ๋ณ ์กฐ๊ฑด์ด ์ฐธ๊ณผ ๊ฑฐ์ง์ผ๋ก ํ๊ฐ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋ชจ๋ ํ
์คํธํ๋์ง๋ฅผ ์ธก์
[๋ณด๊ธฐ]
ใฑ. ์กฐ๊ฑด ใด. ๊ฒฝ๋ก ใท. ๊ฒฐ์ ใน. ๋ถ๊ธฐ ใ
.ํจ์ ใ
. ๋ฌธ์ฅ ใ
. ๋ฃจํ
์ ๋ต
1. ๋ฌธ์ฅ / 2. ๋ถ๊ธฐ / 3. ์กฐ๊ฑด
14.์๋๋ UMLํด๋์ค์ ๊ด๊ณ์ ๊ดํ ๋ฌธ์ ์ด๋ค. ๋ณด๊ธฐ๋ฅผ ๋ณด๊ณ ์๋ง๋ ๊ด๊ณ๋ฅผ ์ ํํ์ฌ ์์ฑํ์์ค.

์ ๋ต
(1) ์ฐ๊ด (2) ์ผ๋ฐํ (3) ์์กด
15. ๋ค์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ดํ ๋ฌธ์ ์ด๋ค. ์๋ ๋ด์ฉ์ ์ฝ๊ณ ์๋ง๋ ๋ต์ ๋ณด๊ธฐ์์ ์ฐพ์ ๊ณจ๋ผ ์์ฑํ์์ค
(1) ๋ค๋ฅธ ํ
์ด๋ธ, ๋ฆด๋ ์ด์
์ ๊ธฐ๋ณธ ํค๋ฅผ ์ฐธ์กฐํ๋ ์์ฑ ๋๋ ์์ฑ๋ค์ ์งํฉ
(2) ํ
์ด๋ธ์์ ๊ฐ ํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ์ต์ํ์ ์์ฑ๋ค์ ์งํฉ
(3) ํ๋ณด ํค ์ค์์ ์ ์ ๋ ๊ธฐ๋ณธ ํค๋ฅผ ์ ์ธํ ๋๋จธ์ง ํ๋ณด ํค
(4) ํ
์ด๋ธ์์ ๊ฐ ํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ์์ฑ๋ค์ ์งํฉ
[๋ณด๊ธฐ]
ใฑ. ์ํผํค ใด. ์ธ๋ํค ใท. ๋์ฒดํค ใน. ํ๋ณดํค
์ ๋ต
(1) ์ธ๋ํค / (2) ํ๋ณดํค / (3) ๋์ฒดํค / (4) ์ํผํค
16. (C์ธ์ด) ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค.
#include <stdio.h>
void func(int** arr, int size){
for(int i=0; i<size; i++){
*(*arr + i) = (*(*arr+i) + i) % size;
}
}
int main(){
int arr[] = {3,1, 4, 1, 5};
int* p = arr;
int** pp = &p;
int num = 6;
func(pp, 5);
num = arr[2];
printf("%d", num);
return 0;
}
์ ๋ต : 1
int arr[] = {3, 1, 4, 1, 5}; // ํฌ๊ธฐ 5
int* p = arr; // p โ arr ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์
int** pp = &p; // pp๋ p๋ฅผ ๊ฐ๋ฆฌํด โ ๊ฒฐ๊ตญ pp โ arr
โ func(pp, 5)์ด ํธ์ถ๋๋ค.
[func() ํจ์]
for(int i = 0; i < size; i++) {
*(*arr + i) = (*(*arr + i) + i) % size;
}
์ด๊ฑด ๊ฒฐ๊ตญ arr[i] = (arr[i] + i) % size ์ ๊ฐ์ ์๋ฏธ์ด๋ค.
[๊ณ์ฐ ๊ณผ์ ]
- (size = 5)
- arr[0] = (3 + 0) % 5 = 3
- arr[1] = (1 + 1) % 5 = 2
- arr[2] = (4 + 2) % 5 = 6 % 5 = 1
- arr[3] = (1 + 3) % 5 = 4
- arr[4] = (5 + 4) % 5 = 9 % 5 = 4
[๋ณ๊ฒฝ๋ ๋ฐฐ์ด]
arr = {3, 2, 1, 4, 4}
[์ดํ]
num = arr[2]; // num = 1
printf("%d", num);
17. ๋ค์ ์๋ ๋ด์ฉ์ ๋ณด๊ณ ์๋ง๋ ์ฉ์ด๋ฅผ ์์ฑํ์์ค. (3๊ธ์๋ก ์์ฑ)
- ๊ณต์ฉ ๋คํธ์ํฌ๋ฅผ ํตํด ์ฌ์ค ๋คํธ์ํฌ๋ฅผ ํ์ฅํ๋ ๊ธฐ์ ์ด๋ค.
- ์ฌ์ฉ์์ IP ์ฃผ์๋ฅผ ์จ๊ธฐ๊ณ , ์ฌ์ฉ์๊ฐ ์ด๋์์ ์ ์ํ๋์ง๋ฅผ ์ถ์ ํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ ๋ค.
- ์ข ๋ฅ๋ก๋ IPsec ๋๋ SSL, L2TP ๋ฑ์ด ์๋ค.
์ ๋ต : VPN
18. (Java) ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค.
public class ExceptionHandling {
public static void main(String[] args) {
int sum = 0;
try {
func();
} catch (NullPointerException e) {
sum = sum + 1;
} catch (Exception e) {
sum = sum + 10;
} finally {
sum = sum + 100;
}
System.out.print(sum);
}
static void func() throws Exception {
throw new NullPointerException();
}
}
์ ๋ต : 101
- NullPointerException์ Exception์ ํ์ ํด๋์ค์ด๋ค.
- func()๋ NullPointerException์ throw ํ๋ค.
- ๋ฐ๋ผ์ try์์ ์์ธ๊ฐ ๋ฐ์ํ๊ณ NullPointerException catch ๋ธ๋ก์ด ์คํ๋๋ค.
- ๊ทธ ๋ค์ finally ๋ธ๋ก์ ๋ฌด์กฐ๊ฑด ์คํ๋๋ค.
๐ก ์คํ ์์
- func() ํธ์ถ โ NullPointerException ๋ฐ์
- catch (NullPointerException e) ์คํ โ sum += 1 โ sum = 1
- finally ๋ธ๋ก ์คํ โ sum += 100 โ sum = 101
19. (Java) ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค. โญโญโญโญโญ
class Main {
public static class Collection<T>{
T value;
public Collection(T t){
value = t;
}
public void print(){
new Printer().print(value);
}
class Printer{
void print(Integer a){
System.out.print("A" + a);
}
void print(Object a){
System.out.print("B" + a);
}
void print(Number a){
System.out.print("C" + a);
}
}
}
public static void main(String[] args) {
new Collection<>(0).print();
}
}
์ ๋ต : B0
๋ฃ๋ ๋ณด๋ ๋ชปํ ์ ๋ค๋ฆญ ๋ฌธ์
Container์ ํด๋์ค ์ด๋ฆ
์ค๋ฒ๋ก๋ฉ = ์ด๋ฆ ๊ฐ์๋ฐ ํ๋ผ๋ฏธํฐ ๊ฐฏ์/ํ์
๋ค๋ฆ = ์ค๋ณต์ ์
Printer ํด๋์ค์๋ ํ๋ผ๋ฏธํฐ์ ๋ฐ๋ผ ์ค๋ฒ๋ก๋ฉ
์ ์์ ํด๋น๋๋ ๊ฐ์ฒด์ ํํ์ ๋ฐ๋ผ์ ๋ค๋ฅธ ๊ฒ์ด ์ถ๋ ฅ๋จ
Container ์ด๋ผ๋ ์ ๋ค๋ฆญ ํด๋์ค๋ฅผ ์ฌ์ฉํด์ ์ฌ์ฉํด์ 0 ์ ์ ๋ฌํ์ ๋ ๊ณผ์ฐ Integer๋ก ์ธ์ํ ๊ฒ์ธ๊ฐ?
public static void main(String[] args) {
new Collection<>(0).print();
}
๋ฉ์ธ ํจ์๋ ์ด๊ฑฐ ํ ์ค ์ด๋ค. `new container <>(0).print();`
์ปจํ
์ด๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์๋๋ฐ ๋ด ์ปจํ
์ด๋์ 0์ ๋ฃ๊ณ ํ์
์ ์ถ์ํํด์ ๋ฃ๊ณ ์ฌ๊ธฐ ํด๋์ค ์์ ์ ์๋์ด ์๋ print()๋ผ๋ ๋ฉ์๋๋ฅผ ์คํํ๋ค.
public static class Collection<T>{
T value;
public Collection(T t){
value = t;
}
public void print(){
new Printer().print(value);
}
}
๊ทธ ์๋ Container ํด๋์ค๋ฅผ ๋ณด์.
์ฌ๊ธฐ์ value๋ T ํ์
์ธ๋ฐ, ์ ๋ค๋ฆญ ํ์
์ ์ปดํ์ผ ํ์์ ํ์
์ด ์ง์์ง๋ค.
์ฌ๊ธฐ์ 0์ int ๋ก Integer๋ก ๋ฐ๋๊ธฐ๋ ํ๋๋ฐ (๋ฐ์ฑ) ํ์ง๋ง ์ ๋ค๋ฆญ ํ์ ์ผ๋ก ๋ค์ด๊ฐ๋ ์๊ฐ ์ปดํ์ผ ํ์์ ํ์ ์ด ์๊ฑฐ๋๋ค. ์ด๋ฅผ ํ์ ์๊ฑฐ(type erasure)๋ผ๊ณ ํ๋๋ฐ ๊ตฌ์ฒด์ ์ผ๋ก ํ์ ์ ์์ฑํ์ง ์๊ณ T๋ก ํ๋ฉด, ์์ํ์ ์ธ Object๋ก ๋ฐ๋๋ ํ์์ด๋ค.
์ฆ, Integer๋ก ๋ค์ด๊ฐ์ง ์๊ณ ์ค๋ฒ๋ก๋ฉ ๋์์ ๋ value ๊ฐ Object๊ฐ ๋์ด ์ค๋ธ์ ํธํ์ผ๋ก ์ค๋ฒ๋ก๋ฉ ๋๋ค.
์ฆ, ์ปดํ์ผ๋ฌ๋ print(Object a)๋ฅผ ํธ์ถํ๊ณ , "B" + 0 ์ ๋ฌธ์์ดํ๋์ด B0์ด ๋จ
๋ค์ ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ ์ ๋ฆฌํ์๋ฉด
void print(Integer a) { System.out.print("A" + a); }
void print(Object a) { System.out.print("B" + a); }
void print(Number a) { System.out.print("C" + a); }
๐ฅ ์ด๊ฑด ์ค๋ฒ๋ก๋ฉ์ด์ง ์ค๋ฒ๋ผ์ด๋ฉ์ด ์๋๋ค.
๐ฅ ์ค๋ฒ๋ก๋ฉ์์๋ ์ปดํ์ผ ํ์์ ํ์
์ด ์ค์ํ๋ค.
๐ฅ value๋ ๋ฐํ์์๋ Integer์ง๋ง, **์ปดํ์ผ ํ์์๋ Object**๋ก ๊ฐ์ฃผ๋๋ค. (type erasure ๋๋ฌธ)
20. ๋ค์์ ๋คํธ์ํฌ์ ๋ํ ๋ฌธ์ ์ด๋ค. ์๋ ๋ด์ฉ์ ๋ณด๊ณ ์๋ง๋ ์ฉ์ด๋ฅผ ์์ฑํ์์ค.
- ์ค์ ๊ด๋ฆฌ๋ ๊ณ ์ ๋ ์ธํ๋ผ ์์ด ์์๋ก ๊ตฌ์ฑ๋๋ ๋คํธ์ํฌ์ด๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ๋ฌด์ ํต์ ์ ํตํด ๋ ธ๋๋ค์ด ์ง์ ์ฐ๊ฒฐ๋์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
- ๊ธด๊ธ ๊ตฌ์กฐ, ๊ธด๊ธ ํ์, ๊ตฐ์ฌ์ ์ธ ์ํฉ ๋ฑ์์ ์ ์ฉํ๊ฒ ํ์ฉ๋ ์ ์๋ค.
[๋ณด๊ธฐ]
ใฑ.Infrastructure Network ใด. Firmware Network ใท. Peer-to-Peer Network
ใน. Ad-hoc Network ใ . Mesh Network ใ .Sensor Network ใ .Virtual Private Network
์ ๋ต : ใน
'ETC > ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ

1. (Java) ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค.
public class Main{ static String[] s = new String[3]; static void func(String[]s, int size){ for(int i=1; i<size; i++){ if(s[i-1].equals(s[i])){ System.out.print("O"); }else{ System.out.print("N"); } } for (String m : s){ System.out.print(m); } } public static void main(String[] args){ s[0] = "A"; s[1] = "A"; s[2] = new String("A"); func(s, 3); } }
์ ๋ต: OOAAA
์ด ๋ฌธ์ ๋ ๋ฌธ์์ด ๋น๊ต์์ ์์ฃผ ๋์ค๋ equals() vs == ๊ฐ๋
์ ์ ์ดํดํ๊ณ ์์ด์ผ ํ ์ ์๋ ๋ฌธ์ ์ด๋ค.
equals()๋ ๋ฌธ์์ด์ ๋ด์ฉ์ ๋น๊ตํ๋ฏ๋ก "A"์ new String("A")๋ ๊ฐ๋ค๊ณ ๋ณธ๋ค.
๋ฐ๋ฉด ==๋ ์ฃผ์๋ฅผ ๋น๊ตํ๋ฏ๋ก ์ด ๊ฒฝ์ฐ false๊ฐ ๋ ์ ์๋ค. (์ด ์ฝ๋์์๋ ์ฌ์ฉ ์ ๋จ)
static String[] s = new String[3];
- ๊ธธ์ด 3์ง๋ฆฌ ๋ฌธ์์ด ๋ฐฐ์ด s ์ ์ธํ๊ธฐ
s[0] = "A"; s[1] = "A"; s[2] = new String("A");
- s[0], s[1]์ ๋ฆฌํฐ๋ด ๋ฌธ์์ด "A" โ ์๋ฐ์์๋ ๊ฐ์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ด๋ฉด ๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค (String pool)
- s[2]๋ new String("A") โ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ "A"๋ฅผ ์์ฑํ๋ค โ ๋ค๋ฅธ ์ฃผ์
ํจ์ func(s, 3)
for(int i=1; i<size; i++){ if(s[i-1].equals(s[i])){ System.out.print("O"); } else { System.out.print("N"); } }
- s[i-1].equals(s[i])๋ ๊ฐ(๋ด์ฉ) ๋น๊ต
- s[0].equals(s[1]) โ "A".equals("A") โ โ true โ O
- s[1].equals(s[2]) โ "A".equals(new String("A")) โ โ true โ O
- ์ถ๋ ฅ: OO
for (String m : s){ System.out.print(m); }
- ๋ฐฐ์ด ์ ์ฒด ์ถ๋ ฅ โ "A", "A", "A"
- ์ถ๋ ฅ: AAA
์ต์ข ์ถ๋ ฅ ๊ฒฐ๊ณผ
OOAAA
2. ๋ค์์ ํ์ด์ฌ์ ๋ํ ๋ฌธ์ ์ด๋ค. ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค.
def func(lst): for i in range(len(lst) // 2): lst[i], lst[-i-1] = lst[-i-1], lst[i] lst = [1, 2, 3, 4, 5, 6] func(lst) print(sum(lst[::2]) - sum(lst[1::2]))
์ ๋ต:3
len(lst) = 6, len(lst) // 2 = 3 # ์ ์๋ถ๋ง
for ๋ฃจํ๋ [0, 1, 2] # 3 ์๊น์ง ๋์๊ฐ
i = 0์ผ๋, lst[0]๊ณผ lst[-1] ๊ตํ lst = [6,2,3,4,5,1]
i = 1์ผ๋, lst[1]๊ณผ lst[-2] ๊ตํ lst = [6,5,3,4,2,1]
i = 2์ผ๋, lst[2]๊ณผ lst[-3] ๊ตํ lst = [6,5,4,3,2,1]
print(sum(lst[::2]) - sum(lst[1::2))
sum(iterable) ํด๋น ์ดํฐ๋ฌ๋ธ ๋ด์ ์์๋ฅผ ๋ชจ๋ ํฉํ๋ค.
์ง์ ์ธ๋ฑ์ค์ ๊ฐ(6,4,2) - ํ์์ธ๋ฑ์ค์ ๊ฐ๋ค(5,3,1)
12 - 9 = 3
3. ์๋์ employeeํ ์ด๋ธ๊ณผ projectํ ์ด๋ธ์ ์ฐธ๊ณ ํ์ฌ ๋ณด๊ธฐ์ SQL๋ช ๋ น์ด์ ์๋ง๋ ์ถ๋ ฅ ๊ฐ์ ์์ฑํ์์ค.

SELECT count(*) FROM employee AS e JOIN project AS p ON e.project_id = p.project_id WHERE p.name IN ( SELECT name FROM project p WHERE p.project_id IN ( SELECT project_id FROM employee GROUP BY project_id HAVING count(*) < 2 ) );
์ ๋ต : 1
4. ๋ค์์ ์ด์์ฒด์ ํ์ด์ง ์์๋ฅผ ์ฐธ๊ณ ํ์ฌ ํ ๋น๋ ํ๋ ์์ ์๊ฐ 3๊ฐ์ผ ๋ LRU ์๊ณ ๋ฆฌ์ฆ์ ํ์ด์ง ๋ถ์ฌ ํ์๋ฅผ ์์ฑํ์์ค.
ํ์ด์ง ์ฐธ์กฐ ์์ : 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1

์ ๋ต: 12
5. ๋ค์์ ๋คํธ์ํฌ ์ทจ์ฝ์ ์ ๋ํ ๋ฌธ์ ์ด๋ค. ์๋ง๋ ์ฉ์ด๋ฅผ ์์ฑํ์์ค.
- IP๋ ICMP์ ํน์ฑ์ ์ ์ฉํ์ฌ ์์ฒญ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ํ ์ฌ์ดํธ์ ์ง์ค์ ์ผ๋ก ๋ณด๋์ผ๋ก์จ ๋คํธ์ํฌ์ ์ผ๋ถ๋ฅผ ๋ถ๋ฅ ์ํ๋ก ๋ง๋๋ ๊ณต๊ฒฉ์ด๋ค.
- ์ฌ๋ฌ ํธ์คํธ๊ฐ ํน์ ๋์์๊ฒ ๋ค๋์ ICMP Echo Reply ๋ฅผ ๋ณด๋ด๊ฒ ํ์ฌ ์๋น์ค๊ฑฐ๋ถ(DoS)๋ฅผ ์ ๋ฐ์ํค๋ ๋ณด์๊ณต๊ฒฉ์ด๋ค.
- ๊ณต๊ฒฉ ๋์ ํธ์คํธ๋ ๋ค๋์ผ๋ก ์ ์ ๋๋ ํจํท์ผ๋ก ์ธํด ์๋น์ค ๋ถ๋ฅ ์ํ์ ๋น ์ง๋ค.
์ ๋ต: ์ค๋จธํ(Smurfing)
6. GoF ๋์์ธ ํจํด์ ๊ด๋ จํด์ ๊ดํธ์์ ์๋ง๋ ์ฉ์ด๋ฅผ ์์ฑํ์์ค.
- ( ) ํจํด์ ํด๋์ค๋ ๊ฐ์ฒด๋ค์ด ์๋ก ์ํธ์์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ ์ฑ ์ ๋ถ๋ฐฐ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ํจํด์ด๋ค.
- ( ) ํจํด์ ๊ฐ์ฒด๋ค ๊ฐ์ ํต์ ๋ฐฉ๋ฒ์ ์ ์ํ๊ณ ์๊ณ ๋ฆฌ์ฆ์ ์บก์ํํ์ฌ ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๋ค.
- ( ) ํจํด์ Chain of Responsibility๋ Command ๋๋ Observer ํจํด์ด ์๋ค.
ํ์
7. (C์ธ์ด) ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค.
#include <stdio.h> int func(){ static int x =0; x+=2; return x; } int main(){ int x = 1; int sum=0; for(int i=0;i<4;i++) { x++; sum+=func(); } printf("%d", sum); return 0; }
์ ๋ต : 20
- func() ํจ์ ์์ ๋ณ์ x๋ static์ด๊ธฐ ๋๋ฌธ์ ํ ๋ฒ๋ง ์ด๊ธฐํ๋๋ฉฐ ํจ์๊ฐ ํธ์ถ๋ ๋๋ง๋ค ๊ฐ์ ์ ์งํ๋ค.
- main() ํจ์ ์์ x๋ ๋ณ๊ฐ์ ๋ณ์์ ๋๋ค. ์ด x++๋ ๋ฐ๋ณต๋ง๋ค ์ฆ๊ฐํ์ง๋ง ๊ฒฐ๊ณผ๊ฐ๊ณผ๋ ์๊ด์๋ค.
- func()๋ ํธ์ถ๋ ๋๋ง๋ค x += 2๋ฅผ ํ๊ณ ํ์ฌ ๊ฐ์ ๋ฐํํ๋ค.
func() ๋ด๋ถ์ static ๋ณ์ x์ ๋ณํ๋ง ๋ณด๋ฉด ๋๋ค.
- 1st call: x = 0 + 2 = 2 โ return 2
- 2nd call: x = 2 + 2 = 4 โ return 4
- 3rd call: x = 4 + 2 = 6 โ return 6
- 4th call: x = 6 + 2 = 8 โ return 8
๋ฐ๋ผ์ sum = 2 + 4 + 6 + 8 = 20
8. ๋ค์์ ๋ฌด๊ฒฐ์ฑ์ ์ฝ์กฐ๊ฑด์ ๋ํ ๋ฌธ์ ์ด๋ค. ์๋ ํ์์ ์ด๋ ํ ( ) ๋ฌด๊ฒฐ์ฑ์ ์๋ฐํ์๋์ง ์์ฑํ์์ค.

์ ๋ต : ๊ฐ์ฒด
๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ ์๋ฐ (Entity Integrity Violation)
๐ ๊ธฐ๋ณธํค(PK)๊ฐ null์ด๊ฑฐ๋ ์ค๋ณต๋ ๋ ๋ฐ์ํ๋ ์ค๋ฅ์ด๋ค.
ํ๋ง๋๋ก ์์ฝํ๋ฉด "๊ธฐ๋ณธํค๋ ๋น์๋ ์๋, ๊ฒน์น ์๋ ์๋ค."
9. ๋ค์์ URL ๊ตฌ์กฐ์ ๊ดํ ๋ฌธ์ ์ด๋ค . ์๋ ๋ณด๊ธฐ์ ์์๋๋ก URL์ ํด๋นํ๋ ๋ฒํธ๋ฅผ ์์ฑํ์์ค.

- query : ์๋ฒ์ ์ ๋ฌํ ์ถ๊ฐ ๋ฐ์ดํฐ
- path : ์๋ฒ ๋ด์ ํน์ ์์์ ๊ฐ๋ฆฌํค๋ ๊ฒฝ๋ก
- scheme : ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ด๋ ํ๋กํ ์ฝ
- authority : ์ฌ์ฉ์ ์ ๋ณด, ํธ์คํธ๋ช , ํฌํธ ๋ฒํธ
- fragment : ํน์ ๋ฌธ์ ๋ด์ ์์น
์ ๋ต : 43125
10. (Python) ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค.
def func(value): if type(value) == type(100): # ์ ์ํ return 100 elif type(value) == type(""): # ๋ฌธ์์ด return len(value) else: return 20 # ๊ทธ ์ธ์ ํ์
a = '100.0' # ๋ฌธ์์ด b = 100.0 # ์ค์ (float) c = (100, 200) # ํํ print(func(a) + func(b) + func(c))
์ ๋ต : 45
a๋ ๋ฌธ์์ด์ด๋๊น len('100.0') ํด์ 5
b๋ ์ค์ํ์ด๋ผ์ else ๋ธ๋ญ์ผ๋ก ๊ฐ์ 20
c๋ ํํํ์ด๋ฏ๋ก else ๋ธ๋ญ์ผ๋ก ๊ฐ์ 20 ๋ฆฌํด
์ด ํฉ์ 5 + 20 + 20 = 45
11. (Java) ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค.
public class Main{ public static void main(String[] args){ Base a = new Derivate(); Derivate b = new Derivate(); System.out.print(a.getX() + a.x + b.getX() + b.x); } } class Base{ int x = 3; int getX(){ return x * 2; } } class Derivate extends Base{ int x = 7; int getX(){ return x * 3; } }
์ ๋ต : 52
- ํ๋(๋ณ์)๋ ์ค๋ฒ๋ผ์ด๋ฉ๋์ง ์๋๋ค. โ ํ๋๋ ์ ์ธ๋ ํ์ ์ ๋ฐ๋ผ ์ ๊ทผํ๋ค.
- ๋ฉ์๋๋ ์ค๋ฒ๋ผ์ด๋ฉ๋๋ค. โ ๋ฉ์๋๋ ์ค์ ๊ฐ์ฒด ํ์ ์ ๋ฐ๋ผ ํธ์ถ๋๋ค.
Base a = new Derivate(); Derivate b = new Derivate();
- a๋ Base ํ์ ์ด์ง๋ง Derivate ๊ฐ์ฒด ์ฐธ์กฐ
- b๋ Derivate ํ์ ์ด๊ณ Derivate ๊ฐ์ฒด ์ฐธ์กฐ
System.out.print( a.getX() // ๋ฉ์๋๋ ์ค๋ฒ๋ผ์ด๋ฉ โ Derivate.getX() โ 7 * 3 = 21 + a.x // ํ๋๋ Base ํ์
๊ธฐ์ค โ Base.x = 3 + b.getX() // Derivate.getX() โ 7 * 3 = 21 + b.x // Derivate ํ์
๊ธฐ์ค โ Derivate.x = 7 );
- a.getX() = 21
- a.x = 3
- b.getX() = 21
- b.x = 7
ํฉ๊ณ = 21 + 3 + 21 + 7 = 52
12. (C์ธ์ด) ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค.
#include <stdio.h> struct Node { int value; struct Node* next; }; void func(struct Node* node){ while(node != NULL && node->next != NULL){ int t = node->value; node->value = node->next->value; node->next->value = t; node = node->next->next; } } int main(){ struct Node n1 = {1, NULL}; struct Node n2 = {2, NULL}; struct Node n3 = {3, NULL}; n1.next = &n3; n3.next = &n2; func(&n1); struct Node* current = &n1; while(current != NULL){ printf("%d", current->value); current = current->next; } return 0; }
์ ๋ต : 312
[๊ตฌ์กฐ์ฒด ์ ์ธ]
struct Node { int value; struct Node* next; }; struct Node n1 = {1, NULL}; struct Node n2 = {2, NULL}; struct Node n3 = {3, NULL}; n1.next = &n3; n3.next = &n2;
๊ตฌ์กฐ์ฒด ์ ์ ํ ๋ฉ์ธํจ์์์ ๋ ธ๋ ์ธ ๊ฐ๋ฅผ ์ ์ํ๊ณ ์๋ค.
[์ฐ๊ฒฐ๊ตฌ์กฐ]
n1 (1) โ n3 (3) โ n2 (2) โ NULL
[func ํจ์ ๋ก์ง]
void func(struct Node* node){ while(node != NULL && node->next != NULL){ int t = node->value; node->value = node->next->value; node->next->value = t; node = node->next->next; } }
์ธ์ ํ ๋ ๋ ธ๋์ ๊ฐ์ ๋ฐ๊พธ๊ณ ๊ทธ ๋ค์ ๋ ์นธ ๊ฑด๋๋ฐ๊ธฐ
[โ๏ธ func(&n1) ์คํ ํ๋ฆ]
n1 (1) โ n3 (3) โ n2 (2)
โ ์ฒซ๋ฒ์งธ ๋ฐ๋ณต (node = n1)
- node = n1, node->next = n3
- Swap n1.value โ n3.value โ n1 = 3, n3 = 1
- node = node->next->next โ node = n2
โ ๋ ๋ฒ์งธ 2nd ๋ฐ๋ณต (node = n2)
- node = n2, but node->next = NULL โ ๋ฃจํ ์ข ๋ฃ
์ต์ข ์ฐ๊ฒฐ ์ํ
n1.value = 3
n1.next.value = 1
n1.next.next.value = 2
์ถ๋ ฅ ์์: 3 1 2
13. ๋ค์์ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง์ ๋ํ ๋ฌธ์ ์ด๋ค. ์๋ ๋ด์ฉ์ ์๋ง๋ ๋ต์ ๋ณด๊ธฐ์์ ๊ณจ๋ผ ์์ฑํ์์ค.
1. ํ
์คํธ๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ๋ฌธ์ฅ์ ์ต์ํ ํ ๋ฒ์ฉ ์คํํ๋์ง๋ฅผ ์ธก์
2. ํ๋ก๊ทธ๋จ ๋ด์ ๋ชจ๋ ๋ถ๊ธฐ(์กฐ๊ฑด๋ฌธ)์ ๊ฐ ๋ถ๊ธฐ๋ฅผ ์ต์ํ ํ ๋ฒ์ฉ ์คํํ๋์ง๋ฅผ ์ธก์
3. ๋ณตํฉ ์กฐ๊ฑด ๋ด์ ๊ฐ ๊ฐ๋ณ ์กฐ๊ฑด์ด ์ฐธ๊ณผ ๊ฑฐ์ง์ผ๋ก ํ๊ฐ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋ชจ๋ ํ
์คํธํ๋์ง๋ฅผ ์ธก์
[๋ณด๊ธฐ]
ใฑ. ์กฐ๊ฑด ใด. ๊ฒฝ๋ก ใท. ๊ฒฐ์ ใน. ๋ถ๊ธฐ ใ
.ํจ์ ใ
. ๋ฌธ์ฅ ใ
. ๋ฃจํ
์ ๋ต
1. ๋ฌธ์ฅ / 2. ๋ถ๊ธฐ / 3. ์กฐ๊ฑด
14.์๋๋ UMLํด๋์ค์ ๊ด๊ณ์ ๊ดํ ๋ฌธ์ ์ด๋ค. ๋ณด๊ธฐ๋ฅผ ๋ณด๊ณ ์๋ง๋ ๊ด๊ณ๋ฅผ ์ ํํ์ฌ ์์ฑํ์์ค.

์ ๋ต
(1) ์ฐ๊ด (2) ์ผ๋ฐํ (3) ์์กด
15. ๋ค์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ดํ ๋ฌธ์ ์ด๋ค. ์๋ ๋ด์ฉ์ ์ฝ๊ณ ์๋ง๋ ๋ต์ ๋ณด๊ธฐ์์ ์ฐพ์ ๊ณจ๋ผ ์์ฑํ์์ค
(1) ๋ค๋ฅธ ํ
์ด๋ธ, ๋ฆด๋ ์ด์
์ ๊ธฐ๋ณธ ํค๋ฅผ ์ฐธ์กฐํ๋ ์์ฑ ๋๋ ์์ฑ๋ค์ ์งํฉ
(2) ํ
์ด๋ธ์์ ๊ฐ ํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ์ต์ํ์ ์์ฑ๋ค์ ์งํฉ
(3) ํ๋ณด ํค ์ค์์ ์ ์ ๋ ๊ธฐ๋ณธ ํค๋ฅผ ์ ์ธํ ๋๋จธ์ง ํ๋ณด ํค
(4) ํ
์ด๋ธ์์ ๊ฐ ํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ์์ฑ๋ค์ ์งํฉ
[๋ณด๊ธฐ]
ใฑ. ์ํผํค ใด. ์ธ๋ํค ใท. ๋์ฒดํค ใน. ํ๋ณดํค
์ ๋ต
(1) ์ธ๋ํค / (2) ํ๋ณดํค / (3) ๋์ฒดํค / (4) ์ํผํค
16. (C์ธ์ด) ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค.
#include <stdio.h> void func(int** arr, int size){ for(int i=0; i<size; i++){ *(*arr + i) = (*(*arr+i) + i) % size; } } int main(){ int arr[] = {3,1, 4, 1, 5}; int* p = arr; int** pp = &p; int num = 6; func(pp, 5); num = arr[2]; printf("%d", num); return 0; }
์ ๋ต : 1
int arr[] = {3, 1, 4, 1, 5}; // ํฌ๊ธฐ 5 int* p = arr; // p โ arr ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์ int** pp = &p; // pp๋ p๋ฅผ ๊ฐ๋ฆฌํด โ ๊ฒฐ๊ตญ pp โ arr
โ func(pp, 5)์ด ํธ์ถ๋๋ค.
[func() ํจ์]
for(int i = 0; i < size; i++) { *(*arr + i) = (*(*arr + i) + i) % size; }
์ด๊ฑด ๊ฒฐ๊ตญ arr[i] = (arr[i] + i) % size ์ ๊ฐ์ ์๋ฏธ์ด๋ค.
[๊ณ์ฐ ๊ณผ์ ]
- (size = 5)
- arr[0] = (3 + 0) % 5 = 3
- arr[1] = (1 + 1) % 5 = 2
- arr[2] = (4 + 2) % 5 = 6 % 5 = 1
- arr[3] = (1 + 3) % 5 = 4
- arr[4] = (5 + 4) % 5 = 9 % 5 = 4
[๋ณ๊ฒฝ๋ ๋ฐฐ์ด]
arr = {3, 2, 1, 4, 4}
[์ดํ]
num = arr[2]; // num = 1 printf("%d", num);
17. ๋ค์ ์๋ ๋ด์ฉ์ ๋ณด๊ณ ์๋ง๋ ์ฉ์ด๋ฅผ ์์ฑํ์์ค. (3๊ธ์๋ก ์์ฑ)
- ๊ณต์ฉ ๋คํธ์ํฌ๋ฅผ ํตํด ์ฌ์ค ๋คํธ์ํฌ๋ฅผ ํ์ฅํ๋ ๊ธฐ์ ์ด๋ค.
- ์ฌ์ฉ์์ IP ์ฃผ์๋ฅผ ์จ๊ธฐ๊ณ , ์ฌ์ฉ์๊ฐ ์ด๋์์ ์ ์ํ๋์ง๋ฅผ ์ถ์ ํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ ๋ค.
- ์ข ๋ฅ๋ก๋ IPsec ๋๋ SSL, L2TP ๋ฑ์ด ์๋ค.
์ ๋ต : VPN
18. (Java) ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค.
public class ExceptionHandling { public static void main(String[] args) { int sum = 0; try { func(); } catch (NullPointerException e) { sum = sum + 1; } catch (Exception e) { sum = sum + 10; } finally { sum = sum + 100; } System.out.print(sum); } static void func() throws Exception { throw new NullPointerException(); } }
์ ๋ต : 101
- NullPointerException์ Exception์ ํ์ ํด๋์ค์ด๋ค.
- func()๋ NullPointerException์ throw ํ๋ค.
- ๋ฐ๋ผ์ try์์ ์์ธ๊ฐ ๋ฐ์ํ๊ณ NullPointerException catch ๋ธ๋ก์ด ์คํ๋๋ค.
- ๊ทธ ๋ค์ finally ๋ธ๋ก์ ๋ฌด์กฐ๊ฑด ์คํ๋๋ค.
๐ก ์คํ ์์
- func() ํธ์ถ โ NullPointerException ๋ฐ์
- catch (NullPointerException e) ์คํ โ sum += 1 โ sum = 1
- finally ๋ธ๋ก ์คํ โ sum += 100 โ sum = 101
19. (Java) ์๋ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ง๋ ์ถ๋ ฅ๊ฐ์ ์์ฑํ์์ค. โญโญโญโญโญ
class Main { public static class Collection<T>{ T value; public Collection(T t){ value = t; } public void print(){ new Printer().print(value); } class Printer{ void print(Integer a){ System.out.print("A" + a); } void print(Object a){ System.out.print("B" + a); } void print(Number a){ System.out.print("C" + a); } } } public static void main(String[] args) { new Collection<>(0).print(); } }
์ ๋ต : B0
๋ฃ๋ ๋ณด๋ ๋ชปํ ์ ๋ค๋ฆญ ๋ฌธ์
Container์ ํด๋์ค ์ด๋ฆ
์ค๋ฒ๋ก๋ฉ = ์ด๋ฆ ๊ฐ์๋ฐ ํ๋ผ๋ฏธํฐ ๊ฐฏ์/ํ์
๋ค๋ฆ = ์ค๋ณต์ ์
Printer ํด๋์ค์๋ ํ๋ผ๋ฏธํฐ์ ๋ฐ๋ผ ์ค๋ฒ๋ก๋ฉ
์ ์์ ํด๋น๋๋ ๊ฐ์ฒด์ ํํ์ ๋ฐ๋ผ์ ๋ค๋ฅธ ๊ฒ์ด ์ถ๋ ฅ๋จ
Container ์ด๋ผ๋ ์ ๋ค๋ฆญ ํด๋์ค๋ฅผ ์ฌ์ฉํด์ ์ฌ์ฉํด์ 0 ์ ์ ๋ฌํ์ ๋ ๊ณผ์ฐ Integer๋ก ์ธ์ํ ๊ฒ์ธ๊ฐ?
public static void main(String[] args) { new Collection<>(0).print(); }
๋ฉ์ธ ํจ์๋ ์ด๊ฑฐ ํ ์ค ์ด๋ค. new container <>(0).print();
์ปจํ
์ด๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์๋๋ฐ ๋ด ์ปจํ
์ด๋์ 0์ ๋ฃ๊ณ ํ์
์ ์ถ์ํํด์ ๋ฃ๊ณ ์ฌ๊ธฐ ํด๋์ค ์์ ์ ์๋์ด ์๋ print()๋ผ๋ ๋ฉ์๋๋ฅผ ์คํํ๋ค.
public static class Collection<T>{ T value; public Collection(T t){ value = t; } public void print(){ new Printer().print(value); } }
๊ทธ ์๋ Container ํด๋์ค๋ฅผ ๋ณด์.
์ฌ๊ธฐ์ value๋ T ํ์
์ธ๋ฐ, ์ ๋ค๋ฆญ ํ์
์ ์ปดํ์ผ ํ์์ ํ์
์ด ์ง์์ง๋ค.
์ฌ๊ธฐ์ 0์ int ๋ก Integer๋ก ๋ฐ๋๊ธฐ๋ ํ๋๋ฐ (๋ฐ์ฑ) ํ์ง๋ง ์ ๋ค๋ฆญ ํ์ ์ผ๋ก ๋ค์ด๊ฐ๋ ์๊ฐ ์ปดํ์ผ ํ์์ ํ์ ์ด ์๊ฑฐ๋๋ค. ์ด๋ฅผ ํ์ ์๊ฑฐ(type erasure)๋ผ๊ณ ํ๋๋ฐ ๊ตฌ์ฒด์ ์ผ๋ก ํ์ ์ ์์ฑํ์ง ์๊ณ T๋ก ํ๋ฉด, ์์ํ์ ์ธ Object๋ก ๋ฐ๋๋ ํ์์ด๋ค.
์ฆ, Integer๋ก ๋ค์ด๊ฐ์ง ์๊ณ ์ค๋ฒ๋ก๋ฉ ๋์์ ๋ value ๊ฐ Object๊ฐ ๋์ด ์ค๋ธ์ ํธํ์ผ๋ก ์ค๋ฒ๋ก๋ฉ ๋๋ค.
์ฆ, ์ปดํ์ผ๋ฌ๋ print(Object a)๋ฅผ ํธ์ถํ๊ณ , "B" + 0 ์ ๋ฌธ์์ดํ๋์ด B0์ด ๋จ
๋ค์ ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ ์ ๋ฆฌํ์๋ฉด
void print(Integer a) { System.out.print("A" + a); } void print(Object a) { System.out.print("B" + a); } void print(Number a) { System.out.print("C" + a); }
๐ฅ ์ด๊ฑด ์ค๋ฒ๋ก๋ฉ์ด์ง ์ค๋ฒ๋ผ์ด๋ฉ์ด ์๋๋ค.
๐ฅ ์ค๋ฒ๋ก๋ฉ์์๋ ์ปดํ์ผ ํ์์ ํ์
์ด ์ค์ํ๋ค.
๐ฅ value๋ ๋ฐํ์์๋ Integer์ง๋ง, **์ปดํ์ผ ํ์์๋ Object**๋ก ๊ฐ์ฃผ๋๋ค. (type erasure ๋๋ฌธ)
20. ๋ค์์ ๋คํธ์ํฌ์ ๋ํ ๋ฌธ์ ์ด๋ค. ์๋ ๋ด์ฉ์ ๋ณด๊ณ ์๋ง๋ ์ฉ์ด๋ฅผ ์์ฑํ์์ค.
- ์ค์ ๊ด๋ฆฌ๋ ๊ณ ์ ๋ ์ธํ๋ผ ์์ด ์์๋ก ๊ตฌ์ฑ๋๋ ๋คํธ์ํฌ์ด๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ๋ฌด์ ํต์ ์ ํตํด ๋ ธ๋๋ค์ด ์ง์ ์ฐ๊ฒฐ๋์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
- ๊ธด๊ธ ๊ตฌ์กฐ, ๊ธด๊ธ ํ์, ๊ตฐ์ฌ์ ์ธ ์ํฉ ๋ฑ์์ ์ ์ฉํ๊ฒ ํ์ฉ๋ ์ ์๋ค.
[๋ณด๊ธฐ]
ใฑ.Infrastructure Network ใด. Firmware Network ใท. Peer-to-Peer Network
ใน. Ad-hoc Network ใ . Mesh Network ใ .Sensor Network ใ .Virtual Private Network
์ ๋ต : ใน