[이것이 컴퓨터 과학이다] 2. 운영체제
·
Computer Science
운영체제운영체제는 프로그램들 간의 올바른 실행을 돕고, 앞서 컴퓨터 구조에서 학습했던 다양한 HW 자원을 프로그램에 배분하는 프로그램이다. 사실상 HW를 작동시키는 프로그램으로, 컴퓨터 전체에서 가장 중요한 프로그램이라고 봐도 과언이 아니다. 프로세스와 스레드- 메모리에는 컴퓨터가 실행되는 순간부터 다양한 프로세스들이 적재되어 실행된다.- 프로세스의 유형 : 포그라운드 프로세스(사용자가 보는 공간에서 사용자와 상호작용하며 실행됨), 백그라운드 프로세스(사용자가 보지 못하는 곳에서 실행됨), 데몬- 프로세스의 유형을 막론하고 하나의 프로세스를 구성하는 메모리 내의 정보는 크게 다르지 않다.프로세스 정보가 저장되는 메모리 영역 중 사용자 영역에 배치되는 영역코드 영역 : 실행 가능한 명령어가 저장되는 공간,..
[이것이 컴퓨터 과학이다] 1. 컴퓨터 구조
·
Computer Science
뛰어난 개발자가 되기 위해서는 단순히 코드를 작성해서 프로그램이 작동되게 하는 것이 아니라 '제대로 프로그램이 작동하게' 만들도록 노력해야 한다. 자신이 작성한 코드가 어떤 과정을 거쳐 실행되는지 설명할 수 있다는 뜻이다. 이런 프로그램의 실행 원리를 제대로 알기 위해 컴퓨터 과학(CS)을 이해해야 하고, 이것이 많은 기업에서 기술 면접을 통해 입사자의 CS 지식을 검증하는 이유이다. 컴퓨터 구조1. 컴퓨터가 이해하는 정보CPU는 기본적으로 0과 1만을 이해할 수 있다. 0과 1을 나타내는 가장 작은 정보의 단위를 '비트'라고 한다. 비트, 바이트, 킬로바이트, 메가바이트 등 모두 프로그램의 크기를 나타낼 때 사용하는 정보 단위이다. CPU 관점에서 정보 단위는 '워드'이다 - 데이터 : 숫자, 문자, ..
[전공] CS 지식 관련 사이트
·
Computer Science
https://gyoogle.dev/blog/algorithm/Bubble%20Sort.html 거품 정렬(Bubble Sort) | 👨🏻‍💻 Tech Interview 거품 정렬(Bubble Sort) Goal Bubble Sort에 대해 설명할 수 있다. Bubble Sort 과정에 대해 설명할 수 있다. Bubble Sort을 구현할 수 있다. Bubble Sort의 시간복잡도와 공간복잡도를 계산할 수 있다. Abstract Bubble S gyoogle.dev https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/main/Algorithm
[알고리즘] 그리디 알고리즘(Greedy Algorithm)
·
Computer Science/Algorithm
간만에 블로그를 쓴다... 자주 쓰고자 다짐했지만..쩝하지만! 지금부터라도 열심히 쓰면 되지 ㅎㅎ오늘은 그리디 알고리즘(Greedy Algorithm)에 대해서 여러 블로그의 내용을 토대로 공부한 내용을 정리해보고자 한다. 👺그리디 알고리즘에 대해서욕심쟁이 기법이니까 욕심 많을 것 같은 이모티콘으로 선정해보았다 ㅋㅋ- 선택의 순간마다 당장 눈 앞에 보이는 최적의 기법으로 선택하여 최종적인 해답에 도달하는 알고리즘이다.- 그 최종적인 답이 최적의 해라는 보장은 없다. => 순간마다 하는 선택은 지역적으로 최적이지만, 전역적으로 최적이라고 보장 못함- 최적의 값의 근사값을 목표로 함- 그리디 알고리즘이 적용될 수 있는 문제는 지역적, 전역적 모두 최적인 문제이어야 한다. 🤑 그리디 알고리즘 문제 풀이 ..
[알고리즘] 분할 정복(Divide and Conquer)
·
Computer Science/Algorithm
이번에는 분할 정복에 대해서 알아보려고 한다. 마찬가지로 알고리즘에서 수업했던 교재를 통해 복습했고 그 책 내용을 바탕으로 글을 써보려고 한다. 확실히 블로그에 글을 남기면서 복습이 되고, 나중에 기억이 안날때도 찾아보기가 쉬워서 더욱 자주 글을 쓰도록 해야겠다... 제발.. 분할 정복(Divide and Conquer) 이란, 문제의 입력 사례를 두 개 이상의 작은 입력 사례로 분할하는 것을 뜻한다. 딱 봐도 저번에 학습했던 DP 보단 훨씬 이해하기 쉬워보인다. 분할한 입력 사례의 답을 바로 얻을 수 있으면, 원래 문제의 답은 얻은 답들을 통합하여 구할 수 있다. 반면에, 답을 구하지 못하였다면, 더 작은 입력 사례로 다시 분할하고, 답을 구할 수 있을 만큼 충분히 작아질 때까지 분할을 계속 한다 정렬..
[알고리즘] DP(Dynamic Programming)
·
Computer Science/Algorithm
오늘은 알고리즘의 주요 유형 중 하나인 DP에 대해 정리해보려고 한다. 이제 새로운 한해가 되었으니 차곡차곡 블로그를 써보려고 한다!! 1. 개념 DP란 무엇인가.. Dynamic Programming이다. 한국말로 하면 동적 계획법이다. 이게 뭐냐해서 공부를 해봤다. DP는 문제의 입력사례를 분할하여 문제를 푼다는 점에서 분할 정복과 비슷하다. 가장 기본적인 개념은 큰 문제를 작은 문제로 쪼개서 그 답을 저장해두고 재활용하는 것이다. 그래서 이 동적 계획의 개발 절차를 책으로 찾아보니까... 1. 문제의 입력사례에 대해서 해답을 계산하는 재귀 관계식(recursive property)을 세운다. 2. 작은 입력사례부터 먼저 해결하는 상향식 방법으로 전체 입력사례에 대한 해답을 구한다. - 이렇게 아주 ..
[자료구조] - 연결 리스트
·
Computer Science/Data Structure
1. 연결리스트(Linked List)란? - 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조이다. - 각 노드는 다음 노드를 가리키는 포인터를 포함한다. 다음 노드를 가리키는 포인터는 다음 노드의 주소 값을 갖고 있다. 각 포인터 변수의 주소도 따로 존재한다. 2. 단순연결리스트의 구현 - 노드의 구성 typedef struct _Node { int data;//저장할 데이터 struct _Node* next;//다음 노드를 가리킬 포인터 }Node; - 연결리스트의 초기화(Init) Node* head; void init() { head = NULL; } - 연결리스트의 삽입(Insert) void insert(int data) { Node* ptr; N..
[자료구조] - 해쉬테이블
·
Computer Science/Data Structure
1. 해쉬테이블이란? - (Key, Value)로 데이터를 저장하는 자료구조 중 하나로 빠르게 데이터를 검색할 수 있는 자료구조이다. 다시 말해 해시 테이블은 어떤 특정 값을 받아서 해시 함수에 입력하고, 함수의 출력값을 인덱스로 삼아 데이터를 저장한다. - 해쉬테이블의 특징은 : 기본 연산으로 search, insert, delete가 있다 순차적으로 데이터 저장 X Key를 통해 Value 얻을 수 있다 (이진탐색트리나 배열에 비해 속도가 훨씬 빠름) 데이터 비교에 효율적이다.(커다란 데이터를 짧은 길이로 축약 가능하므로) key는 중복 불가, value는 가능 수정 가능 일반적으로 배열로 미리 해시 테이블 사이즈만큼 생성 후에 사용 해시 테이블은 key와 value가 1대 1로 매핑되어 있기에 se..