썸네일 운영체제(OS, Operating System) 1) 운영체제운영체제란 컴퓨터 하드웨어 자원을 효율적으로 관리하여 사용자에게 제공하는 시스템 소프트웨어이다.ex) Windows, Linux, iOS, Android, UNIX, Mac OS * 인터페이스: 디바이스와 디바이스 또는 사람과의 통신을 위한 매개체 또는 프로토콜을 의미한다.* 써드파티: 제 3자라는 의미로, 원천 기술과 호환되는 제품을 의미한다. 1-1) 운영체제의 기능프로세스, 기억장치, 입출력 시스템, 네트워킹 등을 관리한다. 입출력 시스템이란 마우스, 키보드 등을 디바이스에 연결 시의 입출력을 말하는데, 사용자가 장치 특성에 대해 알지 못하더라도 연결하여 사용할 수 있도록 보조해주는 것이다.- CPU 스케줄링과 프로세스 관리- 메모리 관리- 디스크 파일 관리- 입출..
썸네일 컴퓨터 네트워크 0) 네트워크 프로그래밍 디바이스간의 데이터를 주고 받을 수 있도록 프로그래밍 하는 것을 의미한다. 온라인 게임들을 게임 서버와의 상호작용을 통해 로직을 수행하고 데이터를 주고 받는데, 이것을 네트워킹이라고 할 수 있겠다. 싱글 플레이 게임과 온라인 게임에서 고려해야할 차이는 무엇일까? 아마 '서버와의 통신'이라는 것에서 생길 핑(Ping)이다. 지연시간(Latency) 라고도 하는데, 빛이 물리적으로 이동하여 데이터를 주는데 걸리는 시간이다. 당연히 같은 컴퓨터 내에서의 데이터 연산이야 눈 깜짝할 새도 아니겠지만, 지구 한바퀴를 도는데는 133ms 정도가 걸린다. 실제로 스타크래프트2를 통해 북미서버(특히나 동부)나 유럽서버를 가보면 핑이 100을 넘어가며 가끔씩은 300까지 튈 때가 있다. 이러한 경..
썸네일 C, C++, C# 0. C와 C++, C# ① C는 절차지향언어로, 1972년에 만들어져 아주 오래되었기에 리소스가 많이 없을때(저사양) 유용하다. C++은 C의 superset이 되고자 만들어졌으며 C와 코드 구조가 유사하다. 다만 C는 함수를 이용하고 C++은 객체를 이용한다. 함수와 객체를 이용하는 것은 출력에서도 차이가 보인다. C는 printf("%d", var);로 함수를 사용하므로 괄호가 존재한다. 하지만 C++은 cout 동적 할당이 한번만 일어나므로 두번 일어나는 std::shared_ptr보다 비용이 적다. 하나의 특정 개체를 참조하는 스마트 포인터가 총 몇 개 인지 참조하는 스마트 포인터이며, 참조 횟수(reference count)가 0이면 메모리를 해제한다. 여러 개의 shared_ptr이 같은 객..
썸네일 컴퓨터 그래픽스 1. 쿼터니언 오일러 각으로는 짐벌락 현상이 일어나므로 4가지 변수(x, y, z, w)를 사용하여 회전의 벡터로 이용한다. 이 4가지 변수 좌표를 쿼터니언(Quaternion)이라고 한다. 1-1) 짐벌락 오일러 각(yaw, pitch, roll)을 사용할 때 오브젝트의 두 회전 축이 겹쳐 원하는 방향으로 회전할 수 없는 일이 생기는데, 이를 짐벌락이라 한다. 더보기 쉬운 이해를 위한 영상 https://www.youtube.com/watch?v=zc8b2Jo7mno 추가 설명 https://handhp1.tistory.com/3 이는 컴퓨터가 회전 축이 겹쳤을 때 어떤 회전 축을 기준으로 해야하는지를 몰라서 발생한다. 즉, 한번에 회전이 연산되는 것이 아니라 회전에 순서가 존재하기 때문이다. 좀 더 ..
썸네일 자료구조와 STL 1. 자료구조란? 데이터를 기억장치에 저장하는 방법 2. 선형구조와 비선형 구조 선형구조 스택, 큐, 데크, (선형, 연결)리스트, 배열 비선형구조 트리, 그래프 3. 순차자료구조와 연결자료구조 순차자료구조 물리적 메모리 저장주소도 순서대로 연속적으로 : 배열 사용, 배열 연결자료구조 물리적 메모리 저장주소는 순서와 상관없음 : 포인터 사용, List 4. 스택과 큐 스택(Stack) : Last In First Out으로 먼저 들어간 것이 나중에 나오는 구조 큐(Queue) : First In First Out으로 먼저 들어간 것이 먼저 나오는 구조 https://cdoiden.tistory.com/16?category=877084 [기초 자료구조] 스택 Stack이란 LIFO(Last In First..
[인공지능] Basic 1. Machine Learning vs Deep Learning 머신 러닝은 기계가 feature extraction을 통해서 경향성을 파악하여 학습하는 방법으로, 이 중에서 신경망(Neural Network)을 이용하는 방법을 딥러닝이라 한다. Machine Learning의 경우 Feature Extraction을 사람이 하지만, Deep Learning에서는 이 부분 또한 인공지능이 학습 한다. 2. Unsupervised Learning vs Supervised Learning vs Reinforcement Learning Unsupervised Learning(비지도학습)이란 아무런 답지를 주지 않고, 단순히 Dataset만을 이용해 스스로 경향성을 찾도록 학습하는 방법이다. ex) Clust..
백트래킹 백트래킹은 그야말로 컴퓨팅적 사고의 정수.. 까지는 아니고 기초쯤 되는듯 싶다. 아직 적은 문제지만 풀어봤을때 괜찮았던 문제는 N과 M시리즈 인 것 같다. 가장 대표적인 문제는 N-Queen 문제. 백트래킹은 간단하게 선택지가 몇 개 있으면, 발 담가보고 안되면 다시 되돌아가는(Back Tracking) 기법이다.
썸네일 [기초 자료구조] 스택 Stack이란 LIFO(Last In First Out)의 개념을 가진 자료구조로, 먼저 들어간 것이 나중에 나오는 구조이다. 즉 아래와 같이 바닥이 막힌 유리병을 생각할 수 있다. STL에서는 라이브러리를 포함하여 사용하며, index로 접근이 불가능하다. #include using namespace std; int main() { int a=5, b=6; stack stk; return 0; } 위와 같은 상태에서 stk.push(a); stk.push(b)를 해주면 다음과 같다. 여기서 stk.pop()을 해주면 다음과 같다. stk의 원소에 접근하기 위해선 stk.top()을 사용한다. 이 경우 원소를 참조는 하지만 stack에서 빼지는 않는다. 즉 이 상태에서 stk.top() == 5이다. 스..
BFS와 DFS void BFS(int x, int y){ deque dq; dq.push_back({x,y}); while(!dq.empty(){ x = dq.front().first; y = dq.front().second; dq.pop_front(); for(int i=0; i
Knapsack 알고리즘 Knapsack 알고리즘은 대학 학부 강의에서도 나올 정도로 유명한 알고리즘이다. 배낭에 물건을 담는데, 최대 가치의 물건을 담으려고 한다는 배경이 있다.. 전형적인 다이나믹 프로그래밍(DP) 문제다. DP의 기본은 과거의 값을 사용한다는 점이다. 코드를 짜보기 전에 어떻게 짤 것인지 대략적인 틀을 짜야한다. DP를 몇차원 배열로 사용할 것인가를 먼저 정해보자. 예를 들어 물건 4개가 있는데, 물건 하나씩 집어 무게와 가치를 본 후 넣을까 말까 고민한다고 생각해보자. 첫번째로 이 물건을 넣었을 때 갱신해줘야 하는 값은 배낭의 무게와 배낭 안에 들어있는 물건의 가치이다. 즉 DP[무게] = 가치로 놓을 수 있다. 즉 각 배낭의 무게에서 최대 가치를 DP에 저장한다. 그런데 이 때 각 물건을 각 배낭의 무게..