1. JSON
2. JAVA
3. 릴리즈 노트의 개요
4. 0 1 2 3
5. 1- 결합도, 2 - 응집도
6. 30,000/(5*300) = 20
7. 1 - 완전성, 2 - 독립성
8. 가 - 처리량 나 - 응답 시간 다 - 처리 소요 시간
9. 데이터베이스에서 비정규화란, 데이터 처리의 편리성을 위하여 중복된 테이블 생성, 테이블 분리 작업 등을 수행하는 것이다.
10. 해싱 함수
11. 데이터, 통신, 클라이언트
12. 디버깅
13. 살충제 패러독스란, 농약을 자주 사용하면 벌레가 해당 농약에 대해서 내성이 생긴다는 뜻으로, 프로그램의 오류 또한 그러한 현상이 일어날 수 있기 때문에 주의해야 한다는 의미이다.
14. 7
15. 표현 계층
16. F, H
17. 50
18.
19.
20.
1. XML (eXtensible Markup Language)
- 데이터를 나타낼 수 있는 방식 중 하나 (다른 하나는 JSON)
- W3C에서 개발된, 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어
- XML 구성
- 유니코드 문자 (Unicode Text) : 텍스트 데이터 형식으로 유니코드를 사용하여 전 세계 언어를 지원
- XML 파서 (Parser) : 대다수의 웹 브라우저가 해석을 위한 번역기를 내장하고 있음
- 마크업(Markup)과 내용(Content) : XML 문서의 문자들은 마크업과 내용으로 구분, 일반적으로 마크업은 "<"로 시작하여 ">"로 끝나는 태그를 의미, 그 외의 문자열은 내용에 해당
- 엘리먼트 (Element) : 마크업과 내용으로 이루어지는 하나의 요소
- XML 문법
- <xml>
- XML문서는 맨 첫 줄에 <xml> 태그를 사용하여 XML 문서임을 명시
- 예시 : <?xml version="XML 문서 버전" encoding="문자셋" standalone="yes|no"?>
- 소문자만 사용, version 속성에는 XML 버전 명시
- encoding 속성에는 문자셋 (character set)을 명시, 기본값 UTF-8
- standalone 속성은 XML 문서가 외부 DTD (Document Type Definition)에 의존 여부를 XML 파서에 알려줌, 기본 값은 no
- XML문서는 맨 첫 줄에 <xml> 태그를 사용하여 XML 문서임을 명시
- 종료 태그
- 모든 XML 요소는 종료 태그를 가지며 태그는 대소문자까지 구분
- 빈 태그에도 반드시 슬래시(/)를 추가해야 함
- 예시 : <lecture> 이 요소는 lecture 요소입니다. </lecture>
- 순서
- 태그를 여 닫는 순서를 반드시 지켜야 함
- 예시 : <p><stroing> 순서를 정확히 지켜야 함 </string></p>
- 속성
- XML에서 속성값은 반드시 따옴표로 감싸야 함
- 예시 : <student name = "장길산">
- 띄어쓰기
- HTML은 띄어쓰기를 인식하지 않으나, XML은 띄어쓰기를 인식
- <xml>
- XML 엔티티 (Entity)
기호 | 엔티티 이름 | 16진수 엔티티 | 설명 |
< | < | < | 보다 작은 |
> | > | > | 보다 큰 |
& | & | & | and 기호 |
" | " | " | 큰 따옴표 |
' | ' | ' | 작은 따옴표 |
2. JSON (JavaScript Object Notation)
- 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA 교환 형식
- 일종의 데이터 포맷으로 단순히 데이터를 표시하는 표현 방법
- 속성-값 쌍으로 이루어진 데이터 객체를 전달하기 위해 사람이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
- 비동기 처리에서 사용되는 AJAX에서 XML을 대체하여 사용
- JSON 표현식 : 사람과 기계 모두 이해하기 쉬우며 용량이 적어 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용
- JSON이 가질 수 있는 자료 기본형
- 숫자 : 정수와 실수를 표현
- 문자열 : 유니코드 문자로 표현, 큰따옴표(" ")로 묶음
- 참/거짓 : 참(True) 또는 거짓(False)를 표현
- 배열 : 다양한 요소들을 쉼표로 구분하여 표현, 대괄호([ ])로 묵음
- 객체 : 이름/값 쌍으로 표현, 중괄호({ })로 묶음
- NULL : 아직 알려지지 않거나 모르는 값을 표현하기 위한 자료형
- JSON 문법
- JSON 형식은 자바스크립트 객체와 마찬가지로 key/value가 존재할 수 있으며 key 값이나 문자열은 항상 큰 따옴표(" ")를 이용하여 표기해야 함
- 객체, 배열 등의 표기를 사용할 수 있음
- 일반 자바스크립트의 객체처럼 원하는 만큼 중첩시켜 사용할 수도 있음
- JSON 형식에서는 null, number, string, array, object, boolean을 사용할 수 있음
- 배열(array)은 대괄호([ ])로, 객체는 속성, 값(name / value) 쌍의 집합으로 중괄호({ })를 사용하여 표현
- JSON의 구성
- Object
- name/value 쌍의 비 순서화된 집합
- '{' 좌중괄호로 시작하여 '}' 우중괄호로 끝내어 표현
- 각 name 뒤에 ':' 콜론을 붙이고 ',' 콤마로 name/value 쌍을 구분
- Array
- 값들의 순서화된 모음 (collection)
- '[' 좌대괄호로 시작해서 ']' 우대괄호로 끝내어 표현
- ',' 콤마로 array 값들을 구분
- Value
- value는 큰 따옴표로 string, number, true, false, object, array 등 표현
- String
- 큰 따옴표("") 안에 둘러싸인 zero 이상 Unicode 문자들의 조합
- 큰 따옴표("") 안에 감싸며 back-slash escape가 적용
- 하나의 문자(character)도 하나의 문자열(character string)로서 표현
- Number
- 8진수와 16진수 형식을 사용하지 않는 것을 제외하면 C언어나 Java의 Number과 유사
- Object
- XML 형식의 JSON 변환 사례 : XML은 데이터 형식이 데이터 자체보다 많이 차지하여 JSON 변환을 통해 간소화 가능
XML | JSON | |
</company> <member nm = "홍길동" /> <member nm = "임꺽정" /> <member nm = "장희빈" /> </company> |
일반 배열 : [ ] | ["홍길동", "임꺽정", "장희빈"] |
연관 배열 : { } | {"boss" : "홍길동", "manager" : "임꺽정", "member" : "장희빈"} |
|
연관 배열, 일반 배열 혼합 | { "boss" : ["홍길동"], "manager" : ["임꺽정", "장녹수"], "member" : ["장희빈", "임복동", "역발산"] } |
- JSON 예제
{ "employees" : [ { "name" : "Surim", "lastName" : "Son" }, { "name" : "Someone", "lastName" : "Huh" }, { "name" : "Someone else", "lastName" : "Kim" } ] } |
3. 릴리즈 노트
- 어플리케이션 최종 사용자에게 전달되는 패키지 소프트웨어 제품의 릴리즈 정보에 대한 문서
- 머릿말/헤더(Header) : 릴리즈 노트 이름, 제품 이름, 버전 번호, 릴리즈 일자, 노트 버전 등을 기록하고 기타 변경 내용을 기록
- 보통 패키징 소프트웨어 매뉴얼 또는 인터넷을 통해 공개
- 릴리즈 노트 작성 항목
- 머릿말/헤더(Header) : 릴리즈 노트 이름, 제품 이름, 버전번호, 릴리즈 일자, 노트 버전 등
- 개요 : 제품 및 변경에 대한 간략한 개요
- 목적 : 릴리즈 노트의 목적에 대한 간략한 개요
- 이슈 요약 : 버그의 간단한 설명 및 릴리즈 노트 추가 항목 요약
- 재현 항목 : 버그 내용 및 버그 재현 항목 작성
- 개선 내용 : 개선사항에 대한 간단한 설명
- 사용자 영향도 : 버전 변경에 따른 최종 사용자 기준의 기능 및 영향도 설명
- 소프트웨어 지원 영향도 : 버전 변경에 따른 소프트웨어 지원 프로세스 및 영향도 기술
- 노트 : 소프트웨어, 하드웨어 설치 항목, 제품, 문서를 포함한 업그레이드 항목 기술
- 면책 조항 : 회사 표준 제품과 관련한 메시지, 불법 복제 방지 등 고지사항
- 연락처 : 사용자 지원 및 문의 연락처
7. 트랜잭션
- 데이터베이스에 행해지는 작업의 논리적인 수행 단위(LOGICAL UNIT OF WORK)
- 트랜잭션의 특징 (ACID)
- 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장.
- Atomicity (원자성)
- 트랜잭션은 분해가 불가능한 최소의 작업 단위로서 연산 전체가 처리되거나 전체가 처리되지 않아야 함 (All or Nothing)
- Commit 또는 Rollback 연산
- Consistency (일관성)
- 트랜잭션이 실행을 성공적으로 완료하면 언제나 모순 없이 일관성 있는 데이터베이스 상태를 보존
- Isolation (독립성)
- 트랜잭션이 실행 중에 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근할 수 없음
- Durability (영속성, 지속성)
- 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장 (영구적 반영)
8. 애플리케이션 성능 측정의 주요 지표
스케줄링 기준 | 목표 | |
처리량 (Throughput) | •일정한 시간 내에 애플리케이션이 처리하는 일의 양 •주어진 시간에 최대한 많은 작업 처리 •처리된 프로세스 수 / 시간 |
최대화 |
경과(반환)시간 (Turnaround time) | •애플리케이션에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간 •전체작업 수행시간을 최소화 •system in -> system out 시간 |
최소화 |
대기 시간 (Waiting time) | 준비 큐에서 기다리는 시간 최소화 | 최소화 |
응답 시간 (Response time) | 애플리케이션에 요청을 전달한 시간부터 응답이 도착할 때까지 걸린 시간 | 최소화 |
자원 사용률 (Utilization) | • 애플리케이션의 의뢰한 작업을 처리하는 동안의 CPU 사용량, 메모리 사용량, 네트워크 사용량 등 자원 사용률 • 단위 시간당 작업을 수행하는 총 시간 비율 |
최대화 |
Fairness | 프로세스별 자원 할당의 공정성 | 최대화 |
Deadline | 실시간 환경 등에서의 즉시 처리 한계 시간 | 최대화 |
9. 비정규화 (반정규화/역정규화, Denormalization)
- 정규화된 데이터 모델을 통합, 중복, 분리하는 과정
- 의도적으로 정규화 원칙을 위배하는 행위
- 정규화된 테이블, 속성, 관계를 시스템의 성능 향상, 개발과 운영을 단순화하기 위해 데이터 모델을 통합하는 프로세스
- 데이터의 정합성과 데이터의 무결성을 우선으로 할지 데이터베이스의 구성의 단순화와 성능을 우선으로 할지를 결정
- 비정규화 수행 절차
- 비정규화 대상 조사
- 범위 처리 빈도수 조사 : 자주 사용되는 테이블에 접근하는 프로세스 수가 많고, 항상 일정한 범위만 조회하는 경우
- 대량의 범위 처리 조사 : 대량의 데이터 범위를 자주 처리하는 경우
- 통계성 프로세스 조사 : 별도의 통계 테이블 고려
- 테이블에 지나치게 많은 조인(Join)이 걸려 데이터 조회 작업이 어려운 경우
- 다른 방법 유도 검토
- 뷰(View) 테이블 사용 : 지나치게 많은 조인이 걸려 데이터 조회 작업이 어려운 경우
- 클러스터링 또는 인덱스 적용 : 대량의 데이터는 PK의 성격에 따라 부분적인 테이블로 분리 (파티셔닝 기법)
- 어플리케이션 수정 : 로직을 변경함으로써 성능을 향상
- 비정규화 적용
- 테이블 비정규화
- 속성의 비정규화
- 관계의 비정규화
- 비정규화 대상 조사
10. MD5
- 1991년 R.rivest가 MD4를 개선한 암호화 알고리즘
- 각각의 512비트짜리 입력 메시지 블록에 대해 차례로 동작
- 각 512 비트 입력 메시지 블록을 처리하고 나면 128 비트 스테이트(state)의 값이 변하는 암호화 알고리즘
11. 프로토콜
- 프로토콜의 기본 3요소
- 구문 (Syntax)
- 데이터의 구조나 형태(포맷)를 정의
- 16bit 정보 송신 시 앞의 8bit는 주소, 다음 8bit는 데이터로 정의
- 시간 (Timing)
- 어떤 데이터를 보낼 것인지, 얼마나 빨리 보낼 것인지를 결정
- 의미 (Semantics)
- 데이터의 각 부분이 무엇을 뜻하는지 알 수 있게 미리 정해 둔 규칙
- 오류 제어, 동기화, 흐름 제어
- 구문 (Syntax)
- 프로토콜의 기능
- 단편화 / 재합성 (Fragmentation / Assembly)
- 송신 측에서는 긴 데이터 블록을 전송이 용이하도록 같은 크기의 작은 블록으로 나누어 전송
- 수신 측에서는 작은 데이터 블록을 재합성하여 원래의 메시지로 복원하는 기능
- 캡슐화 (Encapsulation)
- 비연결 데이터 전송 (데이터그램)과 연결 위주 데이터 전송 (가상회선)을 위한 통신로를 개설, 유지, 종결하는 기능
- 흐름 제어 (Flow Control)
- 데이터 양이나 통신 속도 등이 수신 측의 처리 능력을 초과하지 않도록 조정하는 기능
- 오류 제어 (Error control)
- 데이터 전송 중 발생할 수 있는 오류나 착오 등을 검출하고 정정하는 기능
- 순서 결정 (Sequencing)
- 연결 위주의 데이터를 전송할 때 송신 측이 보내는 데이터 단위 순서대로 수신 측에 전달하는 기능
- 주소 설정 (Addressing)
- 발생지, 목적지 등의 주소를 명기하여 데이터를 정확하게 전달하는 기능
- 동기화 (Synchronization)
- 하나의 통신로를 여러개로 나누거나 (Upward) 회선 여러 개를 하나의 통신로로 변환 (Downward) 시켜 다수의 가입자가 동시에 사용하는 기능
- Transmission Service
- 통신 객체를 사용하기 쉽도록 별도로 추가 서비스 (패리티 검사, 보안도, 서비스 등급, 우선순위 등)를 제공하는 기능
- 단편화 / 재합성 (Fragmentation / Assembly)
12. 네트워크 취약성을 이용한 Dos 공격 기법
공격기법 | 설명 | 대응방안 |
Bonk | 처음 패킷의 시퀀스 번호를 1로 보내고 다음에 보내는 패킷의 시퀀스 번호도 1로 조작해서 보내는 공격 | 패치 적용, 반복적인 패킷 차단 |
Boink | Bonk를 조작한 방법으로 처음에는 순서대로 시퀀스 번호를 순서대로 보내다가 중간부터 반복되는 시퀀스 번호를 보내는 공격 | |
TearDrop | UDP를 이용하여 Bonk, Boink 보다 복잡하게 시퀀스 번호를 조작 | 운영 체제 패치, 방화벽 / IPS 등 이용 차단 |
LAND | 패킷을 전송할 때 출발지 IP 주소와 목적지 IP 주소를 똑같이 만들어서 공격 대상에게 보내는 공격 |
13. 소프트웨어 테스트의 기본 7원칙
- 테스팅은 결함이 존재함을 밝히는 활동 : 테스팅은 소프트웨어의 잠재적인 결함을 줄일 수 있지만, 결함이 발견되지 않아도 결함이 없다고 증명할 수 없음
- 완벽한 테스팅은 불가능 : 무한 경로, 무한 입력 값, 무한 시간이 소요되어 완벽하게 테스트할 수 없으므로 리스크 분석과 우선순위를 토대로 테스트에 집중
- 테스팅은 개발 초기에 시작 : 애플리케이션 개발 단계에 테스트를 계획하고 SDLC의 각 단계에 맞춰 전략적으로 접근
- 결함 집중 (Defect Clustering) : 애플리케이션 결함의 대부분은 소수의 특정한 모듈에 집중되어 존재, 파레토 법칙, 80대 20의 법칙
- 살충제 패러독스 (Pesticide Paradox) : 동일한 테스트 케이스로 반복 실행하면 결함을 발견할 수 없으므로 주기적으로 테스트 케이스를 리뷰하고 개선
- 테스팅은 정황에 의존 : 정황과 비즈니스 도메인에 따라 테스트를 다르게 수행
- 오류 - 부재의 궤변 (Absence of Errors Fallacy) : 어떤 소프트웨어도 오류가 완벽하게 해소된 제품을 만들어 낼 수 없음, 테스트는 오류를 100% 없애는 것이 목적이 아니라 일정 수준 이하로 줄이는 것이 목적
14. switch ~ case문, 증감 연산자, printf
순서 | 코드 | 변수 c 변화 | 설명 |
1 | int c = 1; | c = 1 | int 타입 변수 c를 1로 초기화 |
2 | switch (3) | - | case 3으로 이동하라는 의미 |
3 | case 3: c = 0; | c = 0 | c에 0을 할당 / break가 없으므로 다음 case로 이동 |
case 4: c += 3; | c = 3 | c = c + 3 / break가 없으므로 다음 case로 이동 | |
case 5: c -= 10; | c = -7 | c = c - 10 / break가 없으므로 다음 case로 이동 | |
default: c--; | c = -7 | •switch ~ case 문에서 해당하는 case가 없을 때 실행되는 구문이지만, 위의 case에서 breack가 없어서 실행 •후위 증감 : 현재 라인에서는 -7로 유지, 다음 참조 시 -8로 참조 •c = c - 1 |
|
printf("%d", c); | c = -8 | •printf : 쌍따옴표로 둘러싸인 부분이 출력 •%d:콤마 뒤의 숫자 타입의 변수를 값으로 변환해주는 문자 |
15. OSI 7계층 (Layer)의 의미 및 주요 프로토콜
계층 | 설명 | 주요 프로토콜 | 단위 |
응용 계층 | 사용자와 네트워크 간의 응용 서비스 연결, 데이터 생성 | HTTP, TELNET, DHCP, DNS, FTP, SSH, SMTP, SNMP | Data |
표현 계층 | 데이터의 형식 설정과 부호 교환, 암호화, 해독 | MIME, TLS, SSL, JPEG, MPEG, SMB, AFP | Data |
세션 계층 | 응용 프로세스 간의 연결 접속 및 동기 제어 | SSH, TLS, RPC | Data |
전송 계층 | •프로세스 간 논리적 통신 서비스 제공 •패킷들의 전송유효 확인, 실패한 패킷은 재전송하여 신뢰성 있는 통신 보장 •오류검출과 복구, 흐름 제어 |
TCP (3-Way Handshaking), UDP, SCTP, RTP | Segment |
네트워크 계층 | 단말 간 시스템끼리 Data를 전송하기 위한 최선의 통신 경로 선택을 제공 | IP, ARP, ICMP, IGMP, Ipses | Packet |
데이터 링크 계층 | •인접 시스템 간의 데이터 전송, 전송 오류 제어(Frame) •오류 검출, 재전송, 흐름 제어 |
Ethernet, ATM, PPP | Frame |
물리 계층 | 통신 회선으로 Data를 나타내는 '0'과 '1' 비트의 정보를 회선에 내보내기 위한 전기적 변환이나 기계적 작업을 담당 | RS-4j85, RS-232, X25/21 | Bits |
17. SQL문
- SELECT DEPT FROM STUDENT;
- 학생 테이블에 전기과 50명, 전산과 100명, 전자과 50명이 존재하므로 조회 결과는 200명
- SELECT DISTINCT DEPT FROM STUDENT;
- 학생 테이블에 DEPT 필드인 학과는 전기과, 전산과, 전자과 3개의 학과가 존재하므로 DISTINCT 조건에 의해 중복되지 않는 학과의 수는 3개
- SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT = '전산과';
- WHERE 조건에 의해 전산과 소속 학생만 조회됨
- 그 중 DISTINCT DEPT의 COUNT 튜플의 개수는 1개
18. 데이터 마이닝 (Data Mining)
- 데이터 웨어하우스에 저장된 데이터 집합에서 사용자의 요구에 따라 유용하고 가능성 있는 정보를 발견하기 위한 방법
- 대용량의 데이터 간 관계, 패턴, 추세를 발견하고 이를 의미 있는 정보로 변환하여 기업의 의사결정에 활용하는 기술
- 데이터 마이닝의 주요 기법
- 연관성 탐색 (Association) : 여러 개의 트랜잭션들 중에서 동시에 발생하는 트랜잭션의 연관 관계를 발견
- 연속성 규칙 (Sequence) : 개인별 트랜잭션 이력 데이터를 시계열 분석하여 트랜잭션의 향후 발생 가능성 예측
- 분류 규칙 (Classification) : 과거 수집된 레코드를 분석하여 패턴 즉, 분류별 특성을 속성의 조합으로 나타내는 나무 형태의 분류 모형 (분류 규칙)
- 데이터 군집화 (Clustering) : 인간 두뇌 세포를 모방한 개념, 반복적인 학습 과정을 통하여 모형을 만들어나가는 기법
- 특성 발견 (Characterization)
- 데이터 마이닝 구축 절차 : 데이터 선택 → 데이터 정제 / 보완 → 데이터 변환 → 데이터 마이닝 적용 및 평가
19. HRN (Highest Response-Ratio Next)
- SJF의 약점 보완 기법
- 실행 시간이 긴 프로세스를 차별하고 짧은 프로세스를 지나치게 선호하는 점을 보강한 알고리즘
- 각 프로세스의 우선순위를 서비스 시간만 아니고 서비스 대기시간도 계산하는 스케줄링 기법
- 우선 순위 계산식 = (대기시간 + 서비스 시간) / 서비스 시간
20. align() 함수, 배열, printf
- align() 함수 : 버블 정렬
순서 | 코드 | 설명 |
1 | int temp; | temp 변수 선언, swap을 위한 임시 공간 |
2 | for (int i = 0; i < 4; i++) | i는 0,1,2,3까지 증가, 아래라인의 j값 범위를 좁혀주는 역할 |
3 | for (int j = 0; j < 4 - i; j++) | j의 값은 0부터 4 - i 미만까지 증가 |
4 | if (a[j] > a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } |
앞의 숫자가 뒤의 숫자보다 크다면, 둘의 위치를 바꿈 |
- 결과
순서 | 코드 | 설명 |
1 | int a[] = { 85, 75, 50, 100, 95} | 5개짜리 int 타입 배열 선언 |
2 | align(a); | •배열 a를 align() 함수에 넘겨줌 •a는 배열이므로 값 자체가 아닌 주소값이 넘어가 a 배열 값이 정렬 • call by reference : 주소를 넘기는 방식 |
for (int i = 0; i < 5; i++) printf(%d", a[i]); |
•i는 0부터 4까지 증가 •0,1,2,3,4는 5개짜리 배열의 인덱스와 일치하므로 for 루프를 돌며 정렬되어 넘어온 a의 값을 출력하는데 사용 •"%d"에 의해 숫자 뒤에 빈칸이 하나 들어가도록 출력 • 정답 : 50 75 85 95 |
- 정렬의 종류
- 버블 정렬
- 필수 코드
if (a[j] > a[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
} - 앞의 수가 뒤의 수보다 크다면, 둘의 위치를 바꿈
- 버블정렬은 인접한 두 숫자를 바꾸면서 정렬
- 필수 코드
- 선택 정렬
- 필수 코드
for(...) {
if(array[j] < array[min]) {
min = j;
}
} - 임시변수(min)의 위치에 있는 값보다 작은 값이 있다면 그 값의 위치를 임시 변수에 저장
- 선택 정렬은 한 텀 돌 때마다 가장 작은 값을 찾는 동작을 함
- 필수 코드
- 삽입 정렬
- 필수 코드
for(...) {
a[j+1] = a[j];
} - 값을 우측으로 쉬프트
- 삽입 정렬은 정렬하면서 쉬프트를 함
- 필수 코드
- 버블 정렬
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 필기] 기출문제 - 551 ~ 600. 오답노트 (0) | 2025.03.17 |
---|---|
[정보처리기사 필기] 기출문제 - 601 ~ 650. 오답노트 (0) | 2025.03.17 |
[정보처리기사 필기] 기출문제 - 501 ~ 550. 오답노트 (0) | 2025.03.13 |
[정보처리기사 필기] 기출문제 - 451 ~ 500. 오답노트 (0) | 2025.03.12 |
[정보처리기사 필기] 기출문제 - 401 ~ 450. 오답노트 (2) | 2025.03.11 |