
정보보호학과를 전공하고, KDT 클라우드 교육을 통해 졸업 후에는 클라우드 인프라 엔지니어로 일을 했다. 서버를 만들고, 네트워크를 설정해서 고객사에 인프라를 제공하는 역할을 하면서 점점 반복적인 작업이 많아졌고, "이걸 매번 수작업으로 해야 할까?"라는 생각이 들기

크래프톤 정글 캠퍼스?에 들어오면서 바로 시작한다...다른 팀들은 3명 씩 있었지만 나는 2명인 팀에 할당 받았다.3박 4일 동안 프로젝트를 2명이서 한다는 불안감이 처음엔 있었지만 잘 못하면 어쩔건데라는 마음가짐으로 임했다.두 명이지만 미니 프로젝트를 완성하기 위해선

오늘은 어제 구상한 미니프로젝트를 발표하고 피드백을 들었다.피드백은 2명이 조라 그런지 다른 조들의 비해 빡센? 피드백은 없었지만 생각해볼만한 질문들을 던져주셨다.내 학습 페이지에서 모든 문제를 보여줄 때 문제가 많아지면 화면을 어떻게 보여줄 것인지?문제 검색기능이 있

어제 데이터와 학습페이지 문제 데이터를 넣고, 오늘은 하루종일 프로젝트할 시간이 있어 추가할 기능들을 생각해 봤다.내 답변 수정좋아요 누르기다른 사람 답변 보기타이머 기능을 JS로 조작해 제출 방지내 학습 시 문제 목록 페이징 처리문제 검색 기능을 넣기답변 삭제시간 괜

오늘은 발표날이라 AWS EC2에 배포한 어플리케이션을 건들지 않고 발표 준비를 조원분과 같이 했다.다른 팀원분들과 발표 리허설을 해봤는데, 우리 팀의 발표 시간이 제한 시간인 5분 보다 훨씬 넘쳐서10분을 넘겨버렸다.10분을 넘긴 이유는 우리의 기능 하나부터 열까지

컴퓨터 시스템 이번주 미니프로젝트를 끝내고 조가 바뀌고 WEEK00에서 넘어가면서 WEEL01 컴퓨팅사고로의전환이 주제다. WEEK01은 알고리즘 문제 풀기와 컴퓨터시스템 책에 대한 내용을 공부해야한다. 처음 본 팀원분들과 각자 컴퓨터시스템으로의 여행 1 챕터를 읽

알고리즘 시작.. 오늘은 어제 못한 알고리즘을 시작했다.. 팀원들과

배열과 문자열

오늘은 이번 주 백준 알고리즘 중 재귀함수가 제일 어려웠다..아직 N-Queen은 도전도 못했지만 일단 Z를 먼저 풀어보려 한다.처음에는 혼자 생각한 다음 풀어보려했다. 아직은 알고리즘을 머릿속에 넣고 내가 풀어내는 능력이 부족하여 공책에 그려가며 재귀함수를 어떻게 해

오늘할 백준 문제는 외판원 순회2이다.완전탐색을 하면서 모든 경우의 수를 구하고 제일 낮은 코스트를 출력하면 되는 문제이다.모든 n개의 도시에 모두 방문하는 루트중 코스트가 제일 낮은 경우의 수를 구해야한다. 0,0/1,1/2,2/3,3의 값과 0이 올 수 있는 값은


백준 나무자르기 문제이다. 해당 문제는 이진 탐색을 통해 풀어야 시간초과가 나지 않는다. 아이디어절단 높이 H를 기준으로 모든 나무를 잘랐을 때 얻는 나무 길이의 총합을 비교이 길이가 M 이상이면 더 높은 절단 높이도 가능하므로 H를 더 높히기그렇지 않으면 H 낮추기H

이번 백준 문제는 분할정복으로 푸는 문제이다. 왜냐하면 색깔별 색종이를 구하기 위해선 처음 입력 받은 배열들을 쪼개고 쪼개서 확인하기 때문이다.1\. Divide(분할)문제를 더 작은 문제들로 해체보통 절반, 1/4 등 크기를 줄이면서 나누기2\. Conquer(정복)

백준 뱀 문제는 2차원 배열로 하지 않아도 큐를 활용해서 풀 수 있는 문제다N×N 정사각 보드 위에서 뱀이 이동하며 사과를 먹는 시뮬레이션 문제뱀은 머리를 이동시키고, 사과를 먹으면 몸이 길어짐. 안 먹으면 꼬리 자름방향 전환 정보에 따라 방향을 꺾어가며 이동함뱀이 벽

가운데를 말해요는 특정 방법이 생각나지 않으면 정말 풀기 어려운 문제인것 같다.많은 숫자들을 입력받으면서 실시간으로 중앙값을 구해야해서 단순 배열로하기에는 시간 초과가 날 수 있다.매번 수를 입력받을 때마다 지금까지 입력된 수들 중에서 중앙값을 즉시 출력.maxHeap

숫자 카드를 처음 풀땐 시간초과가 나와서 다른 방식으로 하니깐 통과가 됐다. 이번에 해당 내용을 정리해보려한다.시간 초과 발생이 코드는 check_card의 각 숫자마다 card 리스트 전체를 검색리스트는 탐색할 때마다 O(N) 시간 소요그래서 전체 시간 복잡도는 O(

x86-64 중앙 처리 장치(CPU)는 64비트 값을 저장하는 16개의 범용 레지스터 세트를 포함합니다. 이러한 레지스터는 정수 데이터뿐만 아니라 포인터를 저장하는 데 사용됩니다.16개 레지스터의 이름은 모두 %r로 시작하지만, 명령 세트의 역사적 발전으로 인해 여러

Depth-First Search그래프나 트리에서 한 방향으로 최대한 깊이 탐색한 후, 더 이상 갈 수 없으면 뒤로 돌아가서 다른 방향을 탐색하는 알고리즘스택(Stack) 자료구조 또는 재귀(Recursion)를 이용하여 구현후입선출(LIFO) 방식메모리 사용량이 상
재귀 알고리즘 재귀 알고리즘이란? 자기 자신을 호출하는 알고리즘입니다. 문제를 더 작고 동일한 형태의 하위 문제로 나누어 푸는 방식 > 장점 코드가 간결하고 직관적이다. 반복문으로 표현하기 어려운 문제에 유리 (예: 트리 탐색, 백트래킹, DFS 등) > 단점

프로시저는 소프트웨어에서 핵심적인 추상화 개념입니다. 프로시저는 특정 기능을 구현하는 코드를 지정된 인수 집합과 선택적 반환값과 함께 패키징하는 방법을 제공합니다. 이 함수는 프로그램의 다양한 지점에서 호출할 수 있습니다.프로시저 P가 프로시저 Q를 호출하고, Q가 실
배열 (Array)(2. 반복문과 재귀함수(3. 복잡도 (BigO, 시간, 공간)(4. 정렬 (Sorting)(5. 완전탐색 (Brute Force)(정의: 동일한 타입의 데이터를 연속된 메모리 공간에 저장하는 자료구조특징: 인덱스로 빠른 접근 가능 (O(1))크기가
이분탐색 (Binary Search)(2. 분할정복 (Divide and Conquer)(3. 스택 (Stack)(4. 큐 (Queue)(5. 우선순위 큐 (Priority Queue)(6. 연결 리스트 (Linked List)(7. 해시테이블 (Hash Table)(
그래프 기본 개념(2. 그래프 종류(3. 그래프 표현 방식(4. BFS / DFS(5. 위상 정렬(6. B-Tree(7. 트라이 (Trie)(8. 최단 경로 알고리즘(9. 최소 신장 트리(정의: 정점(Vertex)과 간선(Edge)으로 구성된 비선형 자료구조실생활 예시

이번 백준 문제는 그리디 문제이다. 해당 문제를 풀면서 예제만 이해하는데 오랜시간이 걸렸다. 왜냐하면 나는 서류, 면접의 점수를 주는 줄 알았는데 도저히 예제가 저렇게 나오는지 몰라서 지피티한테 물어보니 점수가 아닌 등수 였다....앞으로 문제를 읽을 때 좀 더 꼼꼼하

오늘의 백준 문제는 평범한 배낭이다. DP를 활용하여 풀 수 있고 문제를 풀면서 DP테이블을 그려봐도 느낌적으로는 알겠는데, 정확히 왜 저런 점화식이 나오는지 이해가 가지 않았다.아이패드가 없는 자의 서러움 너무 볼품이 없어 마크다운으로 DP테이블을 정리했다.행 1:

DP 문제에 많이 약한거 같아 백준의 단계별 풀어보기에서 DP문제를 풀어보고 있다.아직까지 DP의 테이블의 초기값과 어떻게 초기화해야 하는지 감이 너무 안잡힌다ㅠ내가 생각한 DP문제를 풀면서 초반에 중요한 점은 아래 두 가지가 있다.DP 테이블를 어떻게 초기화 하며 초
지역성의 기본 개념(2. 지역성의 두 가지 형태(3. 프로그램 데이터의 지역성(4. 명령어 페치의 지역성(5. 지역성 평가 규칙(6. 실무 적용 사례(지역성 원리 (Principle of Locality): 잘 작성된 컴퓨터 프로그램들이 보이는 경향으로, 최근에 참조된

변수를 선언하는 것은 메모리에 기억공간을 할당하는 것임, 할당된 이후에는 변수명으로 그 기억공간을 사용할당된 기억공간을 사용하는 방법에는 변수명 외에 메모리의 실제 주소값을 사용하는 것이다. 이 주소값을 포인터라고 한다.포인터란 무엇인가?메모리에는 바이트 단위로 그 위

포인터 변수도 하나의 기억공간이므로 포인터(물리적 주소)를 구할 수 있다.포인터변수의 포인터 -> 이중포인터이중포인터로 변수를 참조할 떄는 참조연산자(\*)를 두 번 사용해야 한다.이중포인터 또한 하나의 포인터이므로 포인터변수에 저장하여 사용이중포인터변수도 참조연산자

이번주 WEEK05부터는 c언어를 이용하는데, 5주차는 C언어를 활용해 앞선 알고리즘에 사용했던 자료구조를 구현하는 것이 목표였다.팀원들과 코어타임을 하면서 각자 문제를 맡아 코드를 설명하기로 했다.단일 연결 리스트를 앞쪽 절반과 뒤쪽 절반 두 개의 서브리스트로 분할합
오늘의 문제를 스택과 큐를 활용하는 문제로 알고리즘에서 많이 나오는 괄호가 입력되면 밸런스가 맞는지 안 맞는지 확인하는 함수를 작성하는 문제이다.()\[]{}로 구성된 표현식이 균형잡혀 있는지 판단하는 C 함수 balanced()를 작성하시오.괄호의 짝이 맞는지 안 맞

오늘의 문제는 이진트리 문제이다. C언어를 조금씩 하면서 파이썬으로 알고리즘을 할 때 이해가 잘 가지 않았던 부분이 몬가 이해가 좀 더 잘되는 느낌이다.문제는 트리에 있는 최솟값을 출력하는 함수를 작성하는 것이다. 아래와 같이 문제가 있다.주어진 이진 트리에서 가장 작

이진 탐색 트리(BST)의 한 종류스스로 균형을 잡는 트리BST의 worst case의 단점을 개선(한 쪽으로만 치우쳐지는 경우)모든 노드는 red 혹은 black모든 노드는 red 혹은 black루트 노드는 black모든 nil(leaf) 노드는 blacknil 노드

삭제 전 RB트리 속성을 만족한 상태 삭제 방식은 일반적인 BST와 동일삭제 후 RB트리 속성 위반 여부 확인RB트리 속성을 위반했다면 재조정RB 트리 속성을 다시 만족RB트리에서 노드를 삭제할 때 어떤 색이 삭제되는지가 속성 위반 여부를 확인할 때 매우 중요삭제하려하

프로세서에 전원이 공급되는 순간부터 전원이 차단될 때까지, 프로그램 카운터(PC)는 다음과 같은 주소 시퀀스를 가정합니다:여기서:각 aₖ: 해당하는 명령어 Iₖ의 주소제어 전이(Control Transfer): aₖ에서 aₖ₊₁로의 각 전환제어 흐름(Control Fl
레드-블랙 트리 구현 트러블슈팅 문제 상황 testfinderase_fixed() 테스트에서 세그멘테이션 폴트가 발생 test-rbtree testeraseroot(128) 성공 testeraseroot(128); Segmaent fault 발생 tester

하드웨어가 가상 메모리를 지원하는 역할을 이해하고, 구체적인 예제를 손으로 계산할 수 있는 수준의 상세한 설명을 제공합니다.주소 변환은 N개 요소의 가상 주소 공간(VAS)과 M개 요소의 물리 주소 공간(PAS) 사이의 매핑입니다.CPU의 제어 레지스터현재 페이지 테이
RB-Tree 삭제 삭제 연산은 O(log n)시간에 수행 레드블랙 트리에서 노드를 삭제하는 함수는 TREE-DELETE 함수를 기반 먼저 Tree-Delete가 호출하는 서브 루틴인 Transplant 서브 루틴을 레드블랙 트리에 적용해야 함 후계자 이식 함수 v

C 프로그래머들은 런타임에 추가 가상 메모리가 필요할 때, 저수준의 mmap과 munmap 함수를 사용하는 것보다 동적 메모리 할당자(dynamic memory allocator)를 사용하는 것이 더 편리하고 이식성이 좋습니다.동적 메모리 할당자는 프로세스의 가상 메모

각 메모리 블록은 다음과 같은 구조를 가짐:헤더/푸터: 블록의 크기와 할당 상태 정보를 저장페이로드: 실제 사용자가 사용하는 메모리 영역워드 사이즈가 4인 이유는 코드가 32bit에서 시스템에서의 워드 크기이기 때문 PACK은 위 그림에 있는 헤더와 푸터의 size와

저번 글에서는 책에 나와있는 묵시적 가용 리스트의 First-fit의 방법으로 가용 리스트를 찾았다.책에 나와있는 예제로 테스트를 돌리면 아래와 같이 나온다.점수가 처리량에서 적게 나오는데, 블록의 배치 방법 중 남은 2개를 구현해보려고 한다.first-fit특징:힙의

어제 next-fit으로 구현한 결과 점수가 80 이상이 나왔는데 마지막으로 남은 배치 방법 중 best-fit을 구현해 본다.best-fit특징:모든 가용 블록을 검색요청 크기에 가장 적합한 블록 선택남는 공간이 최소인 블록 선택장점:메모리 효율성 최고내부 단편화 최

환경: AWS 환경 EC2 Ubuntu 22.04 64비트에서 malloc-lab 실행에러: Payload (0x149007000:0x1490073ef) lies outside heap (0x149000000:0x14900700f)원인: 32비트용 코드를 64비트 환경

네트워크 계층 (OSI 7 Layer, TCP/IP Layer)(2. 클라이언트-서버 모델(3. 소켓 (Socket)(4. 파일 디스크립터(5. Datagram Socket vs Stream Socket(6. CGI / WebServer / MIME Type(7. HT

소켓 인터페이스는 Unix I/O 함수와 함께 사용되어 네트워크 애플리케이션을 구축하는 함수들의 집합Linux 커널 관점: 통신의 끝점 (end point)Linux 프로그램 관점: 해당 디스크립터가 있는 열린 파일16바이트 구조: 인터넷 소켓 주소는 16바이트 구조체

Tiny는 HTTP/1.0 프로토콜을 지원하는 간단한 웹 서버 GET 메서드만 지원하며, 정적 파일과 동적 콘텐츠(CGI) 모두 처리Tiny 웹 서버는 다음과 같은 주요 함수들로 구성:main(): 서버 시작점, 클라이언트 연결 수락doit(): HTTP 요청 처리의

Tiny를 수정해서 모든 요청라인과 요청 헤더를 echo하도록 하라C. Tiny의 출력을 조사해서 여러분이 사용하는 브라우저의 HTTP 버전을 확인해라.서버 접속 서버 접속 후 서버 로그의 브라우저 HTTP 버전 확인.크롬 HTTP/1.1Tiny를 확장해서 MPG 비디

CSAPP 숙제 문제를 하며 11.9 문제에서 기존에 사용한 mmap 대신 malloc을 사용하여 정적 컨텐츠를 처리하라고 되어있었다. mmap과 malloc을 사용하는 기준과 일반적으로 어떤 것이 많이 쓰이는지 궁금해졌다.Tiny를 수정해서 정적 컨텐츠를 처리할 때

HTTP 프록시는 클라이언트와 원본 서버 사이에서 중계 역할을 하는 서버클라이언트의 요청을 받아서 원본 서버에 전달하고, 서버의 응답을 다시 클라이언트에게 전달HTTP GET 요청 처리URI 파싱 (hostname, port, path 분리)원본 서버와의 연결 및 통신

프로세스는 실행 중인 프로그램을 의미운영체제로부터 시스템 자원(메모리, CPU 시간 등)을 할당받는 작업의 단위 각 프로세스는 자신만의 고유한 메모리 공간을 가짐따라서 한 프로세스가 다른 프로세스의 메모리 영역에 직접 접근할 수 없음독립성: 각 프로세스는 독립적인 메모

이제 대망의 pintos주간이 찾아 왔는데... 오늘은 팀원분들이랑 같이 pintos를 어떻게 시작해야할지 정리를 노션에 작성을 하고 있다.블로그 글은 자세히는 못 쓰고 진행 상황들만 올라올...각 기능별 및 키워드 우선순위들을 정하여 문서로 작성을 하기로 하고, th

으ㅓ어어어어어 핀토스
우선 순위 기부 - 쓰레드 구조체에서 도네이션 리스트 구성 및 도네이션 리스트에서 같은 락 걸린 제일 빠른 같은 락 도네이션 elem 찾기?thread.h에 thread 구조체가 있기 때문, 이미 구조체가 있기 때문에 thread 구조체에 선언만 하면 됨추가struct

BSD 4.4 스케줄러는 우선순위 기반 스케줄러로, 사용자와 상호작용이 많은(인터랙티브한) 프로세스에 높은 우선순위를 줌nice 값은 프로세스가 CPU 시간을 얼마나 양보할 의향이 있는지를 나타내는 정수값 범위: -20(우선순위 상승) ~ 20(우선순위 하락)기본값 0
문제 상황Pintos의 BSD 스케줄러를 구현하던 중, mlfqs-nice-2 테스트 실패가 발생!!!!문제의 핵심: decay 값에 대한 잘못된 이해를 해버림..decay가 0 또는 1의 정수값만 나올 것이라고 생각을 해버림..FTOI_N()으로 반올림해서 정수로 만