본문 바로가기

전체 글348

[UNIX] 시스템 콜과 라이브러리 함수 1. 유닉스 시스템 프로그래밍 (Unix System Programming)유닉스에서 제공하는 시스템 호출(system call)을 이용해서 프로그램을 작성하는것. **시스템 호출 : 유닉스 시스템이 제공하는 서비스를 프로그램에서 이용할 수 있도록 지원하는 프로그래밍 인터페이스를 의미. 2. 시스템 호출(system call) vs 라이브러리 함수(library function)시스템 호출(system call) - 프로그래밍 인터페이스로 기본적인 형태는 C언어 함수와 같다. - 커널의 해당 모듈을 직접 호출, 작업, 결과를 리턴함. - 성공적으로 수행시 0, 실패시 -1 리턴 - 함수 이름 뒤에 (2) 로 표기 라이브러리 함수(Library function) - 미리 컴파일된 함수들을 묶어서 제공 (자.. 2017. 7. 6.
[운영체제] OS의 정의와 컴퓨터 구조 0. 운영체제(OS)의 정의 - 운영체제, Operating System이라 한다. - 하드웨어와 응용 프로그램 사이에서 관리?중재역할? 를 해주는 시스템 소프트웨어이다. - 하는일 : 자원관리. - 세부적으로 아는것만 말하자면 : 입출력 관리, 메모리할당, 스케줄링, 장치 드라이버 관리 등. - 컴퓨터 구성에서 OS의 위치 : 하드웨어 OS 셸(bash..) / 응용 프로그램 사용자 - 종류 : Linux, Unix, Window OS, MAC OSX 1. 컴퓨터 시스템의 Main Components - CPU Cache Main Memory Hard Disk - CPU와 Cache 메모리는 Computer Architecture 부분에서 다루고 - Main Memory와 Hard Disk는 Opera.. 2017. 7. 6.
[C 자료구조] Linked Lists -Reverse a doubly linked list 0) 제목Hackerrank 의 Linked Lists 부분의 Reverse a doubly linked list 문제입니다.C언어를 이용하여 풀었습니다.http://blockdmask.tistory.com/14 과 80퍼센트 동일.1) 문제설명더블 링크드 리스트를 역순으로 만드는 문제입니다. 이전에 푼 싱글 링크드 리스트 역순과 거의 비슷합니다.input) NULL NULLoutput) NULL NULL2) 풀이과정오리지널노드의 head->next를 가리킬 노드 포인터(curNode) 하나,역순 노드의 헤드가 될 노트 포인터(tail) 하나를 만들어서하나씩 이동하면서 역순으로 셋팅하도록 구현했습니다. 3) 코드1234567891011121314151617181920212223242526272829303.. 2017. 7. 6.
[C 자료구조] Heap - QHEAP1 0) 제목Hackerrank 의 Heap 부분의 QHEAP1 문제입니다.C언어를 이용하여 풀었습니다.1) 문제 설명 기본적인 배열기반 최소힙 구조입니다.minheap을 구현하는 것인데1->insert2->delete3->peek입니다.insert 할때에는 변수를 받아서 삽입,delete 할때에는 맨위의 최소값을 삭제하는게 아니라, 입력한 변수를 찾아서 삭제,peek일때는 minheap의 최소값(root)를 출력하는 문제입니다.2) 풀이 과정 동적할당을 이용하여 처음 입력 받은 N 에서 N+1 만큼의 용량을 할당했습니다.N+1로 동적할당 한 이유는 arr[0]이 아닌 arr[1]부터를 힙의 루트로 사용하는게 더 편리하기 때문입니다.HeapInsert 함수는 heap 포인터와 data를 파라이터로 받아서, .. 2017. 7. 5.
[C 자료구조] Tree - Level Order Traversal 0) 제목Hackerrank 의 Linked Lists 부분의 Reverse a linked list 문제입니다.C언어를 이용하여 풀었습니다.1) 문제 설명 Tree의 Root Node의 Pointer가 Level Order 함수의 파라미터로 주어지고, 주어진 트리의 Level별로 data를 순서대로 출력하는 문제입니다.2) 풀이 과정 BFS(넓이 우선 탐색)라고 생각하여서 Queue를 이용해서 풀었습니다. 또한, 문제에서 주어진 Tree의 Node의 갯수가 최대 500 이어서, 동적할당을 이용한 Linked lists로 Queue를 구현하는 방식으로 풀었습니다. 3) 코드12345678910111213141516171819202122232425262728293031323334353637383940414.. 2017. 7. 5.
[C언어 게임] 뱀 게임 (Snake Game with C) 안녕하세요. BlockDMask입니다.설명하기 전에, 플레이 영상먼저 보겠습니다.제 유튜브에 가면 초기 버전부터 점점 발전해 오는 모습의 영상을 보실수 있습니다.Play List현재 보시는 영상은 마지막 영상으로서 v3.3 최신 버전입니다.Stage4가 가장 어려운데, 도전해보실분은 아래 파일 다운로드 하셔서 즐겨보세요~!댓글 남겨주시기 바랍니다.자막을 키면 아래 설명이 나옵니다. 1. Intro이름 : mySnake Game / C언어 뱀게임요약 : C언어로 만든 뱀 게임입니다. 콘솔 환경에서만 돌아갑니다. (.exe파일)기간 : 2017년 05월 18일 ~ 2017년 05월 26일 + 5월 30일. (8일 - 주말제외)(퇴근하고 개발하고 자고, 퇴근하고 집에가서 개발하고 자고, 퇴근하고 여친만나고.... 2017. 7. 4.
[C 자료구조] Linked Lists - Reverse a linked list 0) 제목Hackerrank 의 Linked Lists 부분의 Reverse a linked list 문제입니다.C언어를 이용하여 풀었습니다.1) 문제설명Reverse 함수의 파라미터로 들어오는 Node 구조체의 포인터 (head pointer of Linked lists)를 받아서 역순으로 연결하여 return 하는 문제입니다.input) 2 -> 4 -> 7 -> NULLoutput) 7-> 4 -> 2-> NULL2) 풀이과정오리지널노드의 head->next를 가리킬 노드 포인터(curNode) 하나,역순 노드의 헤드가 될 노트 포인터(tail) 하나를 만들어 하나씩 이동하면서 역순으로 셋팅하도록 구현했습니다.3) 코드 12345678910111213141516171819202122/* typede.. 2017. 7. 4.
[GitHub] remote, add, commit (초기 연결과 커밋) 안녕하세요. BlockDMask 입니다.repository 를 만들고 remote를 이용하여 연결을 합니다.파일올리는 명령어와 파일 삭제하는 명령어 입니다. git remote set-url origin https://[~~~~~~~~~~~~].gitgit remote -vgit add [File Name]git commit -m "[message]"git pushgit rm [File Name]git commit -m "[message]"git push*실제로 제가 사용하는 명령어를 정리했습니다. 내용이 이상하거나 지적할 사항들은 말씀해주시면 수정하겠습니다. 2017. 6. 30.
[C 자료구조] Linked Lists - Inserting a Node Into a Sorted Doubly Linked List 0) 제목Hackerrank 의 Linked Lists 부분의 Inserting a Node Into a Sorted Doubly Linked List 문제입니다.C언어를 이용하여 풀었습니다.1) 문제설명Doubly Linked List 에서 데이터를 오름차순으로 넣는 문제입니다.데이터와 Linked Lists의 헤드가 파라미터로 주어집니다.주어진 파라미터를 이용해서 적절한 위치에 새 노드를 삽입하는 문제입니다.2) 풀이과정새 노드를 동적할당을 이용하여 만들고, 현재 노드가 empty리스트 인지 검사 후 새 노드가 들어갈 적절한 위치를 찾아주었습니다.찾은 위치가 맨 앞일때, 맨 뒤일때, 가운데 일때를 구분하여서 구현했습니다. 3) 코드 12345678910111213141516171819202122232.. 2017. 6. 29.
[C 자료구조] Queue - Queue using Two Stacks 0) 제목Hackerrank 의 Queue 부분의 Queue using Two Stacks 문제입니다.C언어를 이용하여 풀었습니다. 1) 문제설명두개의 Stack을 가지고 Queue를 구현을 하는 문제입니다. 2) 풀이과정두개의 Stack을 가지고 Queue를 구현을 하는 문제입니다.동적할당으로 구현했습니다.Queue에서 dequeue했을때,Main Stack의 데이터들을 모두 pop 해서 Sub Stack에 push하는 방식으로 데이터 순서를 바꿨습니다.그리고 나서 Sub Stack의 맨위 데이터를 pop 해서 dequeue를 구하고,다시 Sub Stack에 있는 데이터를 모두 pop하고 Main Stack으로 push해서 데이터 순서를 돌렸습니다.두개의 스택으로 구현하라고 하여서 제가 생각한 방법은 .. 2017. 6. 27.
[Linux,UNIX 명령어] 쉘(shell) 명령어 정리 Linux, Unix 여러여러 OS를 사용하는데 아날로그처럼 노트에만 정리해놓은거 사용하다가... ctrl + f 가 안되서 작성합니다. [공통] ./lsls -alls -lvitouchpwdcatcdcpmvmkdirrmdirchmodumaskrmrm -rfnetstattar -xvf (abc.tar) : tar로 압축 풀기tar -zxvf (abc.tar.Z) : tar로 압축 풀기tar -cvf (abc.tar bbb.com) : tar로 압축 하기psps -efkill [pid]kill -9 [pid]zipunzipifconfiggrep 옵션unlias (ex. unalias rm)unameuname -awhoamiftptailtail -f +ftp 에서 binary 혹은 bi 치면 아스키에서 bi.. 2017. 6. 26.
[C 자료구조] Stack - Maximum Element 0) 제목Hackerrank 의 Stack 부분의 Maximum Element 문제입니다.C언어를 이용하여 풀었습니다. 1) 문제설명처음 input으로 N을 받습니다. 그 다음 N개의 쿼리문을 입력받는데,1 - push2 - pop3 - peek인 규칙으로 쿼리문을 받으라고 설명에 나와있습니다. 2) 풀이과정동적할당을 이용하여 스택에 사용하는 배열의 크기를 지정해줬습니다.초기에 입력받은 N에 의해서 쿼리의 갯수가 정해진다고 했을때,push의 최대값(최대로 사용할 용량 크기)이 N이라고 생각했기 떄문에,동적할당을 이용했습니다. 3) 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525.. 2017. 6. 26.