[알고리즘] 그림으로 알아보는 문자열 검색 알고리즘 - 부르트포스, KMP 알고리즘
·
CS/Data Structure
이번 포스팅에서는 문자열 검색 알고리즘 중 부르트포스, KMP 알고리즘에 대해서 적어보겠습니다.1. 부르트포스(단순비교)브루트포스는 통상적으로 모든 경우를 검색하는 과정을 얘기하죠. 선형검색을 기반으로 순차적으로 단순비교를 진행하는 문자열 검색 알고리즘으로 가장 기초적이고 원시적인 방법입니다.두 문자열의 길이의 곱만큼 연산을 진행하기에 시간복잡도는 O(NM)입니다.구현과정문자열ABABCB에서 문자열ABC를 검색하는 경우입니다. 순차적인 비교이기 때문에 어렵지 않습니다.2. KMP알고리즘부르트포스 알고리즘에서 개선된 문자열 검색 알고리즘입니다. 비교가 필요하지 않은 부분은 건너뛰고 비교가 필요한 부분만 비교함으로써 성능을 개선시키는 알고리즘입니다.부르트포스 알고리즘의 시간복잡도가 O(NM) 이었다면, KM..
2. PINTOS :: project 2 - System Call
·
CS/Computer System
/* The main system call interface */voidsyscall_handler (struct intr_frame *f UNUSED) { // TODO: Your implementation goes here. uint64_t syscall_no = f->R.rax; // 콜 넘버 // uint64_t a1 = f->R.rdi; // 파일 네임 // uint64_t a2 = f->R.rsi; // v(데이터) // uint64_t a3 = f->R.rdx; // 사이즈 // uint64_t a4 = f->R.r10; // uint64_t a5 = f->R.r8; // uint64_t a6 = f->R.r9; switch (f->R.rax) { // rax is the..
2. PINTOS :: project 2 - User Program
·
CS/Computer System
static boolload (const char *file_name, struct intr_frame *if_) { ... /* Start address. */ if_->rip = ehdr.e_entry; /* TODO: Your code goes here. * TODO: Implement argument passing (see project2/argument_passing.html). */ //1. 첫 주소 부터 글자의 길이(끝에 \0포함) 만큼 넣어준다 // 글자 길이 만큼 저장 위치가 감소 해야 한다. (거꾸로) // argv[0]까지 = RDI: 4 uintptr_t start_p = (if_ -> rsp); //초기 시작 포인터 저장 uintptr_t curr = 0; //계속 갱신 되는 임..
2. PINTOS :: project 1 - Priority Scheduling
·
CS/Computer System
노션 참고
1. PINTOS :: project 1 - alarm
·
CS/Computer System
정글끝까지📢 “여기까지 잘 오셨습니다. OS프로젝트를 시작합니다.”  OS프로젝트는 PintOS의 코드를 직접 수정해가며 진행하는 프로젝트입니다.PintOS는 2004년 스탠포드에서 만들어진 교육용 운영체제예요. 우리 프로젝트는 이를 기반으로 KAIST 권영진 교수님 주도 하에 만들어진 KAIST PintOS로 진행됩니다. 💡 팀 별로 프로젝트 1~3을 완수해갑니다.KAIST PintOS Assignment : https://casys-kaist.github.io/pintos-kaist/내용은 어렵지만, 매우 상세하게 접근 방법을 기술하고 있습니다.PROJECT 1 - Advanced Scheduler와 CondVar는 옵션노션 참고
[Leet Code] Longest Substring Without Repeating Characters(JavaScript)
·
PS/LeetCode
문제https://leetcode.com/problems/longest-substring-without-repeating-characters/description/IntuitionI thought there were two possible cases.One is when the same alphabet is repeated, and the other is when different letters are reapeated.When same alpahbet is repeatedsave first wordcompare with next words. when next word is same with previous one, then count + 1when different letters are repeated..
[백준] 21736 :: 헌내기는 친구가 필요해 (python)
·
PS/Baekjoon
문제https://www.acmicpc.net/problem/21736 접근 방법아이디어 내기도연이의 위치인 I에서 시작하기캠퍼스의 정보를 가져올 때, I위 위치도 가져올 수 있다!빈 공간인 O와 사람이 있는 P는 이동이 가능하다만난 사람이 0명이면 TT를 반환하고, 만난 사람이 있으면 몇명 만났는지 출력하기1. 초기 설정그래프 탐색을 위해 BFS이용할 것 -> 큐 사용하기dx, dy를 통해 상하좌우 이동하기ix, iy를 통해 시작위치인 도연이 위치 설정하기from collections import dequedx = [1, -1, 0, 0]dy = [0, 0, 1, -1]campus = [] # 캠퍼스 정보를 담을 리스트ix, iy = 0, 0 # 시작 위치 초기화meet = 0 # 만난 사람 수 ..
[C언어] csapp 11장 Homework
·
CS/Computer System
전체 코드 11.6 - c=> GET /favicon.ico HTTP/1.1이 줄에서 HTTP/1.1이 HTTP 버전을 나타낸다. 따라서 나는 HTTP/1.1버전을 사용하는 것을 확인 할 수 있다.11.71. get_filetype에 mp4 타입 추가하기void get_filetype(char *filename, char *filetype){ if (strstr(filename, ".html")) strcpy(filetype, "text/html"); else if (strstr(filename, ".gif")) strcpy(filetype, "image/gif"); else if (strstr(filename, ".png")) strcpy(filetype, "image/png");..
[C언어] tiny 웹 서버 구현하기
·
CS/Computer System
전체 코드https://github.com/ozll-zinni/webproxy/tree/0_make_tiny_server GitHub - ozll-zinni/webproxyContribute to ozll-zinni/webproxy development by creating an account on GitHub.github.com Mainint main(int argc, char **argv)HTTP 웹 서버를 시작하고 클라이언트의 연결을 수신하여 처리한다매개변수argc : 인자 개수argv : 인자 배열메인함수에 전달되는 인수의 개수는 2개이어야 한다argv[0] : 실행 경로,argv[1] : 포트 번호/* $begin tinymain *//* * tiny.c - A simple, iterative ..
[SW 사관학교 정글 9기] Week 04 회고록
·
Review/SW Jungle
👩🏻‍💻탐험준비 - Red-Black Tree📢 "정글끝까지 가기 전에, 준비운동을 하며 필수 스킬을 익혀봅시다" 지난 3주간은 고급 언어인 Python 언어로 가변 리스트, 우선순위 큐와 같은 추상화된 데이터 타입 (abstract data type)을 사용하여 컴퓨터를 다루는 방법을 익혔습니다. 이번 3주간은 Assembly 언어와 매우 가까운 C언어를 사용하여 좀 더 컴퓨터의 본질에 가까이 가 봅시다.3주간 각 1주차 씩 Red-Black tree → malloc → 웹 proxy 서버를 C언어로 구현하면서, C언어 포인터의 개념, gdb 디버거 사용법 등을 익혀봅니다. 또한, Segmentation fault 등 새로운 에러들을 마주해봅니다! 🙂알고리즘(CLRS), 컴퓨터 시스템(CS:A..
내 꿈은 어느 날 문득 그렇게 이루어졌다.
데굴데굴 굴러가는 감자