📂 유형 1: 문자열 슬라이싱과 부분 추출
가장 많이 등장하는 유형으로, strstr, strncpy, strdup 등을 활용해 특정 조건에 맞는 문자열 조각을 만드는 문제입니다.
💡 핵심 복기 포인트
- 포인터 연산: ptr2 - ptr1을 통해 두 지점 사이의 길이를 구하는 기술.
- 메모리 할당: 추출할 길이에 널 문자(\0)를 위한 +1을 반드시 포함하는 습관.
- 안전한 복사: strcpy보다는 길이를 지정할 수 있는 strncpy를 사용하여 Buffer Overflow 방지.
📂 유형 2: 문자열 변환 및 필터링 (strtok 응용)
'세 개의 구분자' 문제처럼 특정 문자를 기준으로 문자열을 쪼개고 정제하는 과정입니다.
💡 핵심 복기 포인트
- strtok의 파괴적 특성: 원본 문자열을 \0으로 채우며 훼손하므로, 반드시 strdup으로 사본을 만들어 작업해야 함.
- 이중 포인터(char**) 반환: 문자열 배열을 반환할 때 각 문자열의 주소를 담을 공간과 실제 문자열 공간을 각각 malloc 하는 계층 구조 이해.
📂 유형 3: 자료구조의 기초, 스택(Stack) 구현
'배열 만들기 6'과 같이 조건에 따라 원소를 넣고 빼는 스택 구조를 배열로 구현하는 문제입니다.
💡 핵심 복기 포인트
- top 인덱스 제어: 실제 데이터를 지우지 않고 top--와 ++top만으로 논리적 삭제와 추가를 구현하는 효율성.
- realloc의 활용: 100번 문제 근처에서 겪으셨던 것처럼, 할당된 메모리를 실제 사용량에 맞게 재조정하여 **시스템 검증(Segmentation Fault)**을 통과하는 기술.
📂 유형 4: 구간 쿼리와 배열 조작
특정 인덱스 범위를 뒤집거나(strrev 응용), 값을 교환(Swap)하는 알고리즘입니다.
💡 핵심 복기 포인트
- 대칭 인덱스 계산: s부터 e까지 뒤집을 때, (s + e) / 2 지점까지만 반복하며 양 끝을 맞바꾸는 로직.
- size_t* result_len: 함수 외부로 처리된 결과의 길이를 전달하기 위한 역참조(*) 활용법. 이는 함수 간의 통신 규칙(Interface)을 이해하는 핵심입니다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [C/Python] 알고리즘 (해시) (0) | 2026.04.08 |
|---|---|
| [C] 코딩 기초 트레이닝 (101 ~ 124) (0) | 2026.04.08 |
| [C] 코딩 기초 트레이닝 (61 ~ 80) (0) | 2026.04.05 |
| [C] 코딩 기초 트레이닝 (41 ~ 60) (1) | 2026.04.03 |
| [C] 코딩 기초 트레이닝 (21 ~ 40) (0) | 2026.04.03 |