[0325] 기초 다지기 & 정리해야 할 CS 개념들💡

이순간·2025년 3월 26일
2

KRAFTON JUNGLE

목록 보기
16/144

📚 오늘 정리해야 할 개념들

요즘 점점 컴퓨터 시스템과 알고리즘의 기반 개념들이
더 중요하게 느껴져서, 하나씩 정리해두기로 했다.
특히 아래 항목들은 반드시 정확히 이해하고 있어야 한다.

🔐 해시 충돌과 체이닝

  • 해시 충돌이란 서로 다른 입력값이 같은 해시값을 가질 때 발생하는 문제다.
  • 충돌이 발생하는 원인은 해시 함수의 한계로 인해 서로 다른 키가 같은 인덱스를 가리키게 되는 경우 때문이다.
  • 이를 해결하는 방법 중 하나가 체이닝(chaining) 이다.
    체이닝은 같은 해시값을 갖는 데이터를 연결 리스트 형태로 이어붙이는 방식으로,
    충돌이 발생해도 해당 인덱스에 여러 데이터를 저장할 수 있다.

🧩 병합 정렬과 분할 정복

  • 병합 정렬은 분할 정복(Divide and Conquer) 전략을 활용한 정렬 알고리즘이다.
  • 리스트를 절반씩 나누고, 정렬한 후 merge 함수에서 두 리스트를 하나로 병합한다.
  • 오늘은 특히 비어있던 merge 함수를 채우는 연습을 했다.

🔁 링버퍼 큐의 enque & deque

  • 링버퍼를 이용한 큐 구현에서는 인덱스가 한 바퀴 돌 수 있기 때문에,
    인덱스 연산을 % 연산자(mod)로 처리한다.
  • 비어 있던 enque, deque 함수를 직접 구현해보면서
    포인터 이동과 예외 처리에 대해 다시 복습했다.

🧠 캐시 메모리와 지역성(locality)

  • 캐시 메모리는 CPU와 메인 메모리 사이에 있는 작고 빠른 메모리로,
    자주 접근하는 데이터를 빠르게 읽기 위해 사용된다.
  • 성능이 향상되는 이유는 지역성(locality) 때문이다.
    • 시간 지역성: 최근 접근한 데이터에 다시 접근할 가능성이 높음
    • 공간 지역성: 인접한 메모리 공간에 접근할 가능성이 높음

🧵 프로세스 vs 쓰레드

  • 프로세스는 운영체제에서 실행 중인 하나의 프로그램 단위이며,
    쓰레드는 프로세스 내에서 실제 작업을 수행하는 최소 단위이다.
  • 프로세스는 독립적인 메모리 공간을 가지지만,
    쓰레드는 같은 프로세스 내에서 메모리를 공유한다.

🧠 실력 부족을 실감한 순간

저녁엔 백준 13334번 철로 문제를 풀다가
생각보다 기초가 너무 부족하다는 걸 절실히 느꼈다.

그래서 지금은 정말 말 그대로 헬로월드부터 다시 시작 중이다.

다시 기본기로 돌아가서 탄탄하게 다져야겠다는 생각이다.
코드는 손이 기억하고, 개념은 머리가 기억하고.


🍜 저녁 - 곰탕


profile
서툴지언정 늘 행동이 먼저이기를

0개의 댓글