본문 바로가기

Computer Science12

[자료구조] 싱글 링크드 리스트(Single Linked List) 링크드 리스트란?노드를 이용하는 리스트를 연결하는 자료 구조이다. 링크드 리스트를 설명하기 전에 배열이라는 것이 있다. 배열(array)이라는 것은 같은 타입으로 된 메모리리 공간을 같은 공간에 쭉 이어서 만드는 것이다.링크드 리스트는 이와 다르게 쭉 연결되지 않고 흩어져 있는 것들을 연결하는 것이다.이때 저장하는 기본 단위가 있는데 이것을 노드라고 한다. 이렇게 링크드리스트는 노드를 기반으로 해서 만드는 자료구조이다. 싱글 리스트의 구성노드(node)싱글 리스트의 구성에는 노드를 빼놓고 이야기 할 수 없다.노드는 데이터를 저장하는 기본 단위이며 구조체(struct)를 사용하여 구현한다. 여기서 배열을 쓸 수 없는 이유가 나오게 된다. 배열은 같은 자료형이어야 한다. 배열은 전부 int형이어도 문제가 없.. 2025. 7. 11.
[algorithm] 시간 복잡도와 빅오 표기법(big-O notation) 알고리즘을 공부하다 보면 필수적으로 듣는 용어가 시간복잡도와 빅오 표기법이다.빅오 표기법이란?먼저 쉽게 말하면 알고리즘 최악의 실행 시간을 표기해 아무리 최악의 상황에도 이 정도 실행 시간은 보장한다는 뜻이다. 컴퓨터과학(Computer Science)에서 알고리즘이란 특정 문제를 해결하기 위한 방법으로 알고리즘의 시간 복잡도를 나타내는 수학적 표기법 중 하나이다. 이는 주어진 알고리즘이 입력 크기에 따라 실행 시간이 어떻게 증가하는지를 나타낸다. 일반적으로 알고리즘의 최악의 경우를 고려하여 시간 복잡도를 나타내고, 이를 O(..) 형태로 표기하며, 괄호 안에 알고리즘의 실행 시간이 입력 크기에 대해 어떻게 증가하는지를 나타내는 함수를 뜻한다. 본래 알고리즘의 효율성을 측정하는 가장 간단한 방법은 “직.. 2025. 7. 7.
[algorithm | 백준/C] 2805: 나무 자르기 문제 문제 정의 문제를 찬찬히 읽어보면.. 나무가 필요한 상근이는 절단기의 높이를 적절히 정해서 나무를 자르고 잘린 부분을 가져간다.이런 느낌이라고 이해하면 될 거 같다. 직접 그렸다. 이때 상근이가 필요한 만큼(M)만 가져갈 수 있는 절단기의 최대 높이(H)를 구하는 문제이다.예를 들어 각각 25, 15, 10, 17미터인 4개의 나무가 있고 상근이는 7미터의 나무가 필요하다. 이때 가장 낭비가 없는 절단기의 높이는 15가 된다.25 - 15 = 515 - 15 = 010 - 15 = x17 - 15 = 2여기서 절단기의 높이가 더 작다면 상근이에게 필요한 나무가 부족하고 절단기의 높이가 더 높다면 낭비되는 나무가 생겨 환경을 생각하는 상근이가 싫어할 것이다. 문제 접근 절단기 높이 H 를 적절히 정.. 2025. 7. 6.
[network] IPv4의 주소 체계와 서브넷팅 IP의 주소 체계와 서브넷팅의 이해는 굉장히 중요합니다. 실제 IP를 낭비하지 않고 적절히 사용할 수 있는 체계에 대해 학습합니다.* IPv4 주소 체계옥텟(Octet): ‘.’으로 구분되는 각 부분. 8비트 숫자 각 옥텟에 올 수 있는 값의 종류: 2^8=256범위: 0~255 => 즉 0.0.0.0 ~ 255.255.255.255IP주소는 A,B,C,D,E의 5개 클래스로 구분.* class 구분클래스는 IP 주소의 첫 번째 옥텟의 4개의 MSB(Most Significant Bit, 최상위 비트) 따라 구분 IP주소의 첫 번째 비트 b1이 0이면 A class => 이런 경우 첫 8비트가 네트워크 부가 되고 나머지는 호스트 부가 된다.b1이 1이면 B~E class => b2가 0이면 B, b2가 .. 2025. 5. 28.
[network] 네트워크의 기초 용어와 개념 컴퓨터 네트워크의 필수적인 기초 용어와 개념에 대해 정리했습니다.* 네트워크 기초 용어네트워크 : 하드웨어적인 전송 매체를 매개로 서로 연결되어 데이터를 교환하는 시스템의 모음인터페이스 : 시스템과 전송 매체의 연결 지점에 대한 규격프로토콜 : 시스템이 데이터를 교환할 때 소프트웨어적으로 동작하는 통신 규칙표준화 : 인터페이스와 프로토콜은 연동 형식의 통일이 필요 시스템 : 일반적으로 시스템 System은 내부 규칙에 따라 자율적으로 동작하는 대상을 가리킴시스템이 여러 개 모여 더 큰 시스템을 구성할 수 있으므로 크기를 기준으로 시스템을 나누지는 않음우리가 알고 있는 인터넷은 수많은 소규모 네트워크들이 서로 연동되는 반복적인 과정을 거쳐서 형성된 거대 연합체의 네트워크인터페이스 : 시스템과 시스템을 연결.. 2025. 5. 28.
[assembly | dreamhack] - Quiz: x86 Assembly 2 writeup Q1. end로 점프하면 프로그램이 종료된다고 가정하자. 프로그램이 종료됐을 때, 0x400000부터 0x400019까지의 데이터를 대응되는 아스키 문자로 변환하면 어느 문자열이 나오는가? end로 점프하며 프로그램이 종료된 시점에 데이터가 어떻게 바뀌었을 지를 알아내야 하는 문제이다. 레지스터 설명rcx: 반복 횟수를 제어하는 카운터 역할이다. 초기값은 0이다.rsi: 데이터의 시작 주소를 담고 있다. (예시에선 0x400000)dl: rdx의 하위 8비트이다. 1바이트 데이터를 임시 저장하기 위해 사용된다.코드 설명 5~6행[code]의 6행을 확인하면 jg end라는 코드를 볼 수 있다.jg 명령어는 jump if greater라는 뜻으로 직전에 비교한 두 피연산자 중 전자가 더 크면 주어진 주소로.. 2025. 5. 25.