[TIL/정처기] 2025/03/27
22년 2회 기출 코드 정리 ✍️22-2-7-JAVA ⚙️보통 switch 문이 문제로 출제되면, break를 생략했을 때의 흐름(fall-through 현상)에 대해 묻는 경우가 많다. 코드 자체는 쉬우니 설명은 추가하지 않겠다. 출력 결과는 -8.22-2-8-C ⚙
22년 2회 기출 코드 정리 ✍️
22-2-7-JAVA ⚙️
public class Test {
public static void main(String[] args) {
int i = 3, k = 1;
switch(i){
case 1: k++;
case 2: k -= 3;
case 3: k = 0;
case 4: k +=3;
case 5: k -= 10;
default: k--;
}
System.out.print(k);
}
}보통 switch 문이 문제로 출제되면, break를 생략했을 때의 흐름(fall-through 현상)에 대해 묻는 경우가 많다. 코드 자체는 쉬우니 설명은 추가하지 않겠다. 출력 결과는 -8.
22-2-8-C ⚙️
#include <stdio.h>
struct A {
int n;
int g;
};
main(){
struct A st[2];
for(int i = 0; i < 2; i++){
st[i].n = i;
st[i].g = i + 1;
}
printf("%d", st[0].n + st[1].g);
}struct A는 int n과 int g 두 멤버를 가진 구조체이다. 구조체 배열의 접근과 각 멤버의 값 활용에 관한 코드이다. 설명은 생략하고자 한다. 출력 결과는 2.
22-2-13-Python ⚙️
a = "REMEMBER NOVEMBER"
b = a[0:3] + a[12:16]
c = "R AND %s" % "STR"
print(b+c)기출문제를 분석하다 보니 파이썬에서는 보통, 문자열 슬라이싱과 문자열 포맷팅의 활용에 관해 이해하고 있는지 묻는 경향이 있다. 설명은 생략한다. 출력 결과는 REMEMBER AND STR.
22-2-15-C ⚙️
#include <stdio.h>
int len(char* p);
int main(){
char* p1 = "2022";
char* p2 = "202207";
int a = len(p1);
int b = len(p2);
printf("%d", a + b);
}
int len(char* p){
int r = 0;
while(*p != '\0'){
p++;
r++;
}
return r;
}문자열의 길이를 구하는 함수를 직접 구현한 코드이고, 해당 함수와 포인터를 활용한 문자열 순회에 관한 이해를 묻고 있다. 출력 결과는 10.
22-2-16-C ⚙️
#include <stdio.h>
int main() {
int a[4] = {0, 2, 4, 8};
int b[3];
int* p;
int sum = 0;
for(int i = 1; i < 4; i++){
p = a + i;
b[i - 1] = *p - a[i - 1];
sum = sum + b[i - 1] + a[i];
}
printf("%d", sum);
}포인터 연산에 관한 코드. 이런 종류의 코드는 어려운 것은 아닌데 변수가 많아서 실수하기 쉽다. i / p / b[i - 1] / sum와 같은 변수들의 변화를 꼼꼼히 기록하면 쉽게 풀어낼 수 있다. 출력 결과는 22.
22-2-17-JAVA ⚙️
public class Test {
public static void main(String[] args) {
cond obj = new cond(3);
obj.a = 5;
int b = obj.func();
System.out.print(obj.a + b);
}
}
class cond {
int a;
public cond(int a) {
this.a = a;
}
public int func() {
int b = 1;
for(int i = 1; i < a; i++)
b += a * i;
return a + b;
}
}Java에서, 객체의 인스턴스 변수는 public으로 선언되었을 경우 외부에서도 접근 및 수정이 가능하다는 것이 핵심인 코드이다. 따라서 func()에서의 연산은 a는 5, b는 1임을 전제로 수행된다. 출력 결과는 61.
이론 문제 포인트 ✍️
1. 집합 연산자를 이용한 통합 질의 ✅
- 집합 연산자를 사용하여 2개 이상의 테이블의 데이터를 하나로 통합한다
SELECT 속성명1, 속성명2, ...
FROM 테이블명
UNION | UNION ALL | INTERSECT |EXCEPT
SELECT 속성명1, 속성명2, ...
FROM 테이블명
[ORDER BY 속성명 [ASC | DESC]];- ``UNION``: 두 SELECT문의 조회 결과를 통합하여 모두 출력, 중복된 행은 한 번만 출력함(합집합)
- ``UNION ALL``: 두 SELECT문의 조회 결과를 통합하여 모두 출력, 중복된 행도 그대로 출력함(합집합)
- ``INTERSECT``: 두 SELECT문의 조회 결과 중 공통된 행만 출력(교집합)
- ``EXCEPT``: 첫 번째 SELECT문의 조회 결과에서 두 번째 SELECT문의 조회 결과를 제외한 행을 출력(차집합)
2. OUTER JOIN ✅
조인은 따로 묶어서 정리할 예정
3. 소프트웨어 개발 보안 요소 ✅
- ``기밀성(Confidentiality)``: 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용되고, 정보가 전송 중에 노출되더라도 데이터를 읽을 수 없음
- ``무결성(Integrity)``: 시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있음
- ``가용성(Availability)``: 인가받은 사용자는 시스템 내의 정보와 자원을 언제라도 사용할 수 있음
=> 여기까지가 보안의 3대 요소
- ``인증(Authentication)``: 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지를 확인하는 모든 행위
- ``부인 방지(NonRepudiation)``: 데이터를 송신, 수신한 자가 해당 사실을 부인할 수 없도록 증거를 제공함
4. SQL 삽입 ✅
- SQL을 삽입하여 내부 데이터베이스 서버의 데이터를 유출 및 변조하고 관리자 인증을 우회하는 보안 약점, 동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링 되도록 설정하여 방지할 수 있음
5. 개인키 암호화 기법 ✅
- Private Key Encryption, 동일한 키로 데이터를 암호화하고 복호화하는 암호화 기법 - 대칭 암호 기법 또는 단일키 암호화 기법이라고도 함 - 암호화와 복호화 속도가 빠름 - 관리해야 할 키의 수가 많음 - 스트림 암호화 방식과 블록 암호화 방식이 있음
- ``스트림 암호화 방식``: 평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화 하는 방식(LFSR / RC4 / TKIP)
- ``블록 암호화 방식``: 한 번에 하나의 데이터 블록을 암호화 하는 방식(DES, SEED, AES, ARIA, IDEA, Skipjack)
6. IDEA ✅
- IDEA(International Data Encryption Algorithm), 스위스의 라이(Lai)와 메시(Messey)가 1990년에 개발한 PES를 개선한 알고리즘
- 블록 길이는 64비트, 키 길이는 128비트
7. Skipjack ✅
- 국가 안전 보장국(NSA)에서 개발한 암호화 알고리즘 - 클리퍼 칩(Clipper Chip)이라는 IC 칩에 내장되어 있음 - 블록 길이는 64비트, 키 길이는 80비트 - 주로 음성 통신 장비에 삽입되어 음성 데이터를 암호화 함
8. DES ✅
- Data Encryption Standard, 1975년 미국 NBS에서 발표한 개인키 암호화 알고리즘 - 블록 길이는 64비트, 키 길이는 56비트, 16회의 라운드를 수행함 - DES를 세 번 적용하여 보안을 더욱 강화한 3DES(Triple DES)가 있음
9. AES ✅
- Advanced Encryption Standard, 2001년 미국 표준 기술 연구소(NIST)에서 발표한 개인키 암호화 알고리즘 - DES의 한계를 느낀 NIST에서 공모한 후 발표 - 블록 크기는 128비트, 키 길이에 따라 AES-128, AES-192, AES-256으로 분류됨
10. TKIP ✅
- Temporal Key Integrity Protocol, 기존의 무선 랜 보안 프로토콜인 WEP의 취약성을 보완한 데이터 보안 프로토콜 - 암호 알고리즘의 입력 키 길이를 128비트로 늘리고 패킷당 키 할당, 키값 재설정 등의 키 관리 방식을 개선
More to read
AI&ML 기초
Reference: https://bettermesol.github.io/ml/2019/09/16/ai-ml-dl/AI: 기계가 사람처럼 생각하고 판단하게 만드는 가장 넓은 범주의 기술입니다.ML: 데이터를 학습하여 스스로 규칙을 찾아내는 AI의 한 분야로,
'AI Agent Economy'Novitas : AI Agent가 지갑을 가지는 세상
얼마 전, 미래에셋증권 리서치 리포트(올해는 이더리움이다: 에이전트 시대의 Near Automata)를 접하게 되었습니다. AI Agent를 인간과 함께할 경제 주체로 바라보는 시각에 적잖이 충격을 받았더랬죠.한 가지 짚고 넘어갈 부분이 있습니다. 우리가 흔히 'AI'
'ERC-8004'Novitas: AI 에이전트 경제 주체
Web 4.0을 한 문장으로 정의하면 Sovereign Transact입니다.AI가 인간의 허락 없이 지갑을 소유하고, 결제를 수행하며, 인프라를 통제하는 주권적 경제 주체가 되는 세계입니다. Web 3.0이 블록체인 기반의 탈중앙화를 실현했다면, Web 4.0은 그