4번째 포스팅이다. 이번 포스팅에서는 노드를 삭제하는 delete_node와 특정 인덱스 위치에 노드를 삽입하는 insert_at 기능을 구현해 보려고 한다.1. 구현 목표insert_at : 링크드 리스트의 중간 원하는 인덱스에 데이터를 추가한다.delete_node : 원하는 값이 있는 노드를 링크드리스트에서 삭제한다.이번 구현은 이전과 비교해 조금 복잡하게 느껴질 수 있다.2. 기능 구현🔨 insert_at링크드 리스트의 특정 index 위치에 data를 가지는 node를 추가해야 한다.구현 아이디어새로운 노드를 먼저 생성해 둔다.만약 index 값이 0 이라면 이 전에 구현했던 insert_front와 같이 추가를 하면 된다.현재 노드를 지정할 cur 변수를 만들고 head로 지정한다.count..
이 전 포스팅에서 초기 설정을 진행했다. 이제 본격 적으로 구현을 시작할 것이다. 시작에 앞서 아마 실행을 해 봤을 수. 있는데 실행하면 현재 테스트 코드에서 호출하고 있는 함수들이 실제 구현되지 않았다고 에러를 발생시킬 것이다. 그래서 우리가 구현을 끝냈거나 구현을 진행할 예정인 테스트 코드는 제외하고 나머지는 주석 처리를 해 두면 된다.1. 구현 목표우리가 이번에 구현할 기능은 아래와 같다.create_node : 링크드 리스트에 추가할 노드 생성insert_end : 링크드 리스트의 끝에 노드 추가free_list : 링크드 리스트 전체 삭제 및 동적 메모리 해제링크드 리스트는 노드라고 하는 요소들을 연결해서 구현한다고 할 수 있고 그 말은 링크드 리스트를 구현하기 위해 먼저 노드를 만들 수 있어야..
크래프톤 정글 8기 37일 차 TIL 링크드리스트 구현하기 - C언어를 이용해 링크드 리스트를 직접 구현해보려고 한다. 아무래도 정글에서 준 과제는 링크드 리스트의 특성을 이용해 특정 함수를 구현하는 것을 요구하는데 과제만 해결하는 것을 넘어 직접 구현을 해 보면서 익히는 것이 더 좋을 것 같아서 직접 구현을 진행해 보려 한다. 링크드 리스트에 대해서 부족하지만 정리했던 내용을 확인하려면 이 전 포스팅 했던 글을 확인하는 것도 좋을 것 같다.2025.04.10 - [크래프톤 정글] - 크래프톤 정글 8기 - TIL 31일차 (링크드 리스트 - C)링크드 리스트 구현 전 준비본격 적으로 구현을 시작하기 전 준비해야 할 사항이 있다. 먼저 나는 구현의 검증을 담당해 줄 테스트 코드를 미리 작성해 두었다. 그..
크래프톤 정글 8기 - 36일차 TILBoyer-Moore 문자열 검색 알고리즘 정리Boyer–Moore 알고리즘은 문자열 검색 알고리즘 중에서도 가장 빠르고 실용적인 알고리즘 중 하나다. 이 글에서는 Boyer-Moore 알고리즘의 기본 개념, 핵심 규칙(Bad Character Rule, Good Suffix Rule), 그리고 실제 탐색 방식에 대해 정리한다.1. Boyer-Moore 알고리즘의 핵심 아이디어"비교는 오른쪽 끝부터 시작하며, 실패하면 패턴을 최대한 멀리 점프시킨다."일반적인 문자열 검색은 왼쪽부터 비교하지만,Boyer–Moore는 오른쪽부터 왼쪽으로 비교한다.실패 시, 두 가지 규칙 중 더 먼 쪽으로 점프하여 검색 속도를 높인다.보이어-무어 알고리즘에서는 한국어로 "건너뛰기 표(sk..
크래프톤 정글 8기 - 35일 차 TILKMP (Knuth-Morris-Pratt) 문자열 검색 알고리즘 정리문자열 검색 알고리즘 중 하나인 KMP 알고리즘은 텍스트에서 특정 패턴이 존재하는지 빠르게 찾아내기 위한 알고리즘이다. 이 글에서는 KMP 알고리즘의 동작 원리와 핵심 개념인 LPS(Longest Prefix Suffix) 배열을 중심으로 정리하였다.1. KMP 알고리즘의 핵심 아이디어"문자열 검색 중 일치하지 않으면, 이미 비교한 정보를 활용해 중복 비교를 피한다"일반적인 완전 탐색은 실패하면 항상 패턴의 처음부터 다시 시작하지만, KMP는 패턴 내의 반복 구조를 이용해 비교 위치를 점프할 수 있다. 이로 인해 최악의 시간복잡도가 O(n + m)으로 매우 효율적이다.2. LPS (Longest ..