블로그

야나

[그림으로 쉽게 배우는 자료구조와 알고리즘] 배열 연결리스트 스택 큐 덱 해시테이블 셋

* 해당 포스팅은 그림으로 쉽게 배우는 자료구조와 알고리즘- by 감자 멘토님 강의를 수강후 작성하는 글 입니다. KEYWORD배열설명(한줄로): 연속된 메모리 공간에 데이터를 저장하는 선형 자료구조.시간복잡도:접근: O(1)삽입/삭제: O(n) (중간/앞에서), O(1) (끝에서)탐색: O(n) (정렬되지 않은 경우), O(log n) (정렬된 경우)유리한 케이스: 인덱스를 통해 데이터를 빠르게 접근할 때, 데이터 크기가 고정되어 있고 삽입/삭제가 자주 일어나지 않는 경우.연결리스트 (Linked List)설명(한줄로): 각 노드가 데이터와 다음 노드를 가리키는 포인터로 연결된 선형 자료구조.시간복잡도:접근: O(n)삽입/삭제: O(1) (노드를 알고 있을 때)탐색: O(n)유리한 케이스: 크기가 동적이고, 삽입/삭제가 빈번하게 일어나는 경우. 특히, 중간에 데이터가 삽입되거나 삭제될 때.스택 (Stack)설명(한줄로): 후입선출(LIFO, Last In First Out) 방식으로 데이터를 처리하는 자료구조.시간복잡도:접근: O(n)삽입/삭제: O(1) (top에서)탐색: O(n)유리한 케이스: 함수 호출 스택, 되돌리기 기능 등 후입선출 방식이 필요한 경우.큐 (Queue)설명(한줄로): 선입선출(FIFO, First In First Out) 방식으로 데이터를 처리하는 자료구조.시간복잡도:접근: O(n)삽입/삭제: O(1) (front와 rear에서)탐색: O(n)유리한 케이스: 주문 처리 시스템, 프린터 대기열 등 선입선출 방식이 필요한 경우.덱 (Deque, Double-Ended Queue)설명(한줄로): 양쪽 끝에서 삽입과 삭제가 가능한 자료구조.시간복잡도:접근: O(n)삽입/삭제: O(1) (양쪽 끝에서)탐색: O(n)유리한 케이스: 양방향에서 삽입/삭제가 자주 일어나는 경우. 예를 들어, 양쪽에서 데이터를 넣고 빼야 하는 데크나 스케줄링 시스템.해시테이블 (Hash Table)설명(한줄로): 해시 함수를 이용해 키를 인덱스로 변환하여 데이터를 저장하는 자료구조.시간복잡도:접근: O(1) (평균), O(n) (최악의 경우)삽입/삭제: O(1) (평균), O(n) (최악의 경우)탐색: O(1) (평균), O(n) (최악의 경우)유리한 케이스: 키-값 쌍으로 데이터를 저장하고 빠르게 검색할 때. 특히, 데이터의 크기가 클 때 빠른 검색이 필요할 경우.셋 (Set)설명(한줄로): 중복되지 않는 고유한 값들을 저장하는 자료구조.시간복잡도:접근: O(1) (해시셋인 경우)삽입/삭제: O(1) (평균), O(n) (최악의 경우)탐색: O(1) (평균), O(n) (최악의 경우)유리한 케이스: 중복이 없는 고유한 데이터를 관리할 때, 또는 값이 존재하는지 빠르게 확인할 때.

알고리즘 · 자료구조배열연결리스트스택해시테이블

인프런 워밍업 클럽 스터디 2기 - CS 1주차 미션

운영체제 위 코드는 1초 마다 플레이어가 스킬을 사용했는 지 체크하는 코드입니다. 이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능이 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?while(true){ wait(1); // 1초 멈춤 bool isActivated = checkSkillActivated(); // 체크 } 인터럽트 방식이벤트 형식 -> 입출력이 완료되면 CPU에게 신호를 보냄 -> 신호를 받은 CPU는 ISR을 실행시켜 작업을 완료함폴링 방식은 CPU가 입출력 관리자에게 주기적으로 확인함 -> 비효율적 프로그램과 프로세스가 어떻게 다른가요?  프로그램은 명령문의 집합체프로세스는 프로그램이 실행될 때 메모리 위에 올라간 것 -> 즉 실행 중인 프로그램(메모리와 CPU를 사용 중임)운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요? PCB  프로그램이 실행되고 프로세스가 만들어질 때 PCB가 함께 생성 PCB에는 해당 프로세스의 정보를 가지고 있는 자료구조(포인터, 프로세스 상태 등등)컨텍스트 스위칭이란 뭔가요?  프로세스를 실행하는 도중 다른 프로세스를 실행하기 위한 작업 다른 프로세스를 실행하기 위해 실행중인 프로세스A의 작업 내용을 PCB(A)에 저장이후 실행할 프로세스의 작업 내용이 담긴 PCB(B)를 토대로 CPU가 세팅됨자료구조 여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다.이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요?이유를 함께 적어주세요.    배열교실의 학생 정보 -> 크기가 정해져있음학생 정보를 저장하고 열람 -> 참조한다. 인덱스로 빠르게 접근이 가능하기 때문에 배열을 사용한다(O(1)의 성능을 가지고 있음)   여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다.주문은 들어온 순서대로 처리됩니다.이 때 여러분이라면 어떤 자료구조를 선택하실 건가요? 이유를 함께 적어주세요.  큐들어온 순서대로 처리 -> 선입선출

미션프로세싱배열연결리스트

야나

[미션] 인프런 워밍업 클럽 2기 CS - 1주차

 운영체제1. 아래 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다. 이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능에 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요? while(true){ wait(1); // 1초 멈춤 bool isActivated = checkSkillActivated(); // 체크 }폴링 방식 대신 인터럽트 방식을 사용하면 성능을 개선할 수 있습니다. 인터럽트는 특정 조건이 발생했을 때, CPU가 그 일을 처리하게 만드는 방식이기 때문에 예를 들어, 플레이어가 스킬을 사용했을 때만 인터럽트가 발생하도록 해서 CPU가 불필요하게 1초마다 체크하지 않도록 할 수 있습니다.2. 프로그램과 프로세스가 어떻게 다른가요?프로그램 : 저장된 명령어의 집합, 실행 파일 형태로 하드디스크나 메모리에 존재하지만 실행되지 않은 상태.프로세스 : 실행 중인 프로그램으로, 운영체제가 관리하는 실행 단위. CPU 시간과 메모리 같은 자원을 차지하며 활동 중임.3. 멀티프로그래밍과 멀티프로세싱이 어떻게 다른가요?멀티프로그래밍: 메모리에 여러 프로그램을 올려두고, CPU가 한 번에 하나의 프로그램을 처리하지만 빠르게 교체하며 실행하는 방식.멀티프로세싱: 여러 CPU 또는 코어가 동시에 여러 프로세스를 병렬로 실행하는 방식으로, 물리적으로 병렬 처리가 이루어짐.4. 운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요?운영체제는 프로세스 제어 블록(PCB, Process Control Block)을 사용해서 프로세스를 관리합니다. PCB는 운영체제가 각 프로세스의 상태와 관련된 중요한 정보를 저장하는 자료구조이며, 운영체제는 이 정보들을 기반으로 CPU 스케줄링, 메모리 관리, 입출력 관리를 수행합니다.5. 컨텍스트 스위칭이란 뭔가요?컨텍스트 스위칭은 운영체제가 한 프로세스의 실행 상태를 저장하고, 다른 프로세스의 상태를 복구해 CPU에서 실행을 전환하는 과정입니다. 이때 프로세스의 레지스터, 메모리, 스케줄링 정보를 저장하고 복구합니다.자료구조와 알고리즘1. 여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다. 이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요? 이유를 함께 적어주세요.해시테이블 : 해시테이블은 학생의 고유한 식별자(예: 학번, 이름 등)를 키로 사용하여 해당 학생 정보를 저장하고 빠르게 검색할 수 있습니다. 평균적으로 O(1)의 시간 복잡도로 접근이 가능해서 대규모 학생 정보를 빠르게 처리할 수 있다는 장점이 있기때문에, 학번이나 이름으로 학생을 조회하는 작업에 적합하다고 생각합니다.2. 여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다. 주문은 들어온 순서대로 처리됩니다. 이 때 여러분이라면 어떤 자료구조를 선택하실 건가요? 이유를 함께 적어주세요.큐 : 주문은 들어온 순서대로 처리되기 때문에 FIFO(First In, First Out) 방식이 필요하기 때문에 FIFO 로 데이터가 처리되는 큐가 주문처리를 위한 자료구조 적합하다고 생각합니다.

알고리즘 · 자료구조알고리즘자료구조배열연결리스트스텍해시테이블

채널톡 아이콘