🔥 0. 이 과목 핵심 구조 (이걸 먼저 머리에 박아)
문제 = 코드 줌 → 구조 파악 → 실행 흐름 추적 → 결과 or 기능 답
너가 해야 할 사고 흐름:
- 이거 배열 기반인가? 포인터인가?
- top / front / rear 있음? → 스택/큐 판별
- 재귀 있음? → 종료조건 먼저 찾기
- 반복문 구조 → 시간복잡도 계산
🔥 1장. 자료구조 + 알고리즘 (틀리면 바로 나가리 영역)
📌 핵심 공식:
프로그램 = 자료구조 + 알고리즘
📌 시험 포인트:
- 코드 보고 “이건 자료구조 역할 / 알고리즘 역할” 구분
- 시간복잡도 빈칸 채우기
👉 예:
for(i=0; i<n; i++) // → O(n)
for(i=0; i<n; i++)
for(j=0; j<n; j++) // → O(n^2)
📌 핵심 감각
- 한 번 루프 → O(n)
- 두 번 중첩 → O(n²)
- 반씩 줄어듦 → O(log n)
👉 이거 틀리면 시험 그냥 망한다
📄 참고:
🔥 2장. 재귀 (시험 확정 출제 영역)
💣 무조건 나오는 2개
1️⃣ 피보나치
fib(n) = fib(n-1) + fib(n-2)
📌 특징:
- 호출 폭발 (중복 계산)
- 시간복잡도: O(2ⁿ) 수준 (존나 느림)
👉 시험 포인트:
- 몇 번 호출되는지
- 결과값
2️⃣ 하노이 탑
📌 핵심:
n개 = n-1 이동 + 1개 이동 + n-1 이동
👉 이동 횟수:
2^n - 1
👉 이거 그냥 외워라 (100% 나온다)
💣 재귀 문제 푸는 법 (이거 못하면 끝)
- 종료조건 찾기 (if문)
- 재귀식 찾기
- 작은 값부터 추적
📄 참고:
🔥 3장. 배열 + 포인터 (교수 취향 저격 영역)
💣 & 와 * 개념 (무조건 나옴)
| 기호 | 의미 |
|---|---|
| &a | 주소 |
| *p | 값 |
👉 예:
int a = 10;
int *p = &a;
- p → a의 주소
- *p → 10
👉 시험 포인트:
- 출력값 맞추기
- 주소 추적
💣 구조체
struct student {
int age;
};
👉 시험:
- 값 접근 → s.age
- 포인터 → p->age
💣 배열 특징
- 연속된 메모리
- index 기반 접근
👉 코드 보면 바로 알아야 함
📄 참고:
🔥 4장. 스택 (🔥🔥🔥 핵심)
💣 구조
LIFO (후입선출)
💣 핵심 변수
top
💣 핵심 코드 패턴
push → stack[++top]
pop → stack[top--]
👉 이거 보이면 100% 스택
💣 상태
공백: top == -1
포화: top == MAX-1
💣 시험에서 진짜 많이 나오는 유형
1️⃣ 실행 결과 맞추기
push(1)
push(2)
pop()
👉 결과: 2
2️⃣ 괄호 검사 (개념)
- 왼쪽 → push
- 오른쪽 → pop 비교
📄 참고:
🔥 5장. 큐 + 원형큐 (덱 전 단계 핵심)
💣 큐
FIFO (선입선출)
💣 변수
front / rear
💣 선형 큐 문제점
- 앞에 공간 낭비됨
💣 원형 큐 (시험 핵심🔥)
💥 조건 2개 외워라
공백: front == rear
포화: (rear + 1) % SIZE == front
👉 이거 틀리면 100% 탈락
💣 핵심 코드 패턴
rear = (rear + 1) % SIZE
front = (front + 1) % SIZE
👉 이거 보이면 원형큐
💣 시험 유형
1️⃣ 상태 추적
- enqueue / dequeue 순서 따라가기
2️⃣ 배열 상태 출력 맞추기
📄 참고:
🔥 6장. 연결리스트 (덱 이전 핵심)
💣 구조
데이터 + 포인터
💣 특징
- 메모리 연속 X
- 삽입/삭제 빠름
💣 핵심 코드 패턴
p->link = head;
head = p;
👉 이거 보이면 “앞에 삽입”
💣 삭제 핵심
pre->link = removed->link;
👉 중간 삭제
📄 참고:
🔥 마지막: 시험에서 진짜 나오는 문제 유형
💣 유형 1: “이 구조 뭐냐”
- top 있음 → 스택
- front/rear 있음 → 큐
- 포인터 연결 → 리스트
💣 유형 2: 실행 결과
👉 무조건 손으로 추적
💣 유형 3: 빈칸 채우기
- push / pop / enqueue / dequeue
- 복잡도
💣 유형 4: 재귀 계산
- fib
- 하노이
🔥 내가 보는 합격 조건
딱 3개만 완벽히 하면 통과 가능:
- 스택/큐 코드 보고 바로 구분
- 재귀 계산 손으로 추적 가능
- 시간복잡도 감각 (O(n), O(n²), O(log n))