Computer Science 29

[자료구조] - 큐 (Queue)(선형큐)(C언어)

[ 큐의 개념 ] : 컴퓨터의 기본적인 자료구조 중 하나로 먼저 집어넣은 자료가 먼저 나오는 FIFO(First In First Out) 또는 LILO(Last In Last Out) 구조의 자료형식을 말함. 큐는 선형큐와 원형큐가 존재하며 이번 포스팅에서는 선형큐에 대해 알아보겠습니다. 선형큐는 데이터를 집어넣는 Enqueue 기능과 데이터를 내보내는 Dequeue 기능이 존재합니다. 큐의 핵심 key 로는 front 와 rear이 존재합니다. Front는 가장 먼저 들어온 데이터를 가리키고 Rear은 가장 나중에 들어온 데이터를 가리키게 됩니다. 예시로 살펴봅시다 Enqueue의 방식을 살펴보면 front는 고정되어 있고 새로 들어오는 데이터는 큐의 끝(tail)에 저장되는 방식..

5. Git reset, revert (간단히 알아봅시다)

커밋을 취소하는 법에 대해 알아봅시다. 제일 최신 상태인 commit 5가 아닌 commit 3으로 되돌아가고 싶다면 어떻게 해야할까요? 즉, commit 5와 commit 4를 삭제하고 commit 3을 제일 최신 상태로 놔두고 싶은 경우 어떻게 해야할지 알아봅시다. 크게 2가지 방법이 있는데 바로 "reset"과 "revert" 입니다. commit 3의 고유값을 복사하고 git reset commit3고유값 --hard 명령어를 입력해줍시다. 그러고 다시 git log로 확인해보면 commit 3이 제일 최신 상태로 변경된 것을 볼 수 있습니다. 즉, 버전관리하고 있는 파일의 소스코드가 3번째 버전으로 되돌아간 것입니다. 확인해봅시다. 현재 버전 관리 중인 f1.txt와 f2.txt의 내용이 sou..

[자료구조] - 스택 (C언어)

스택의 개념 : 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 선형 구조 (LIFO : Last In First Out) [Push, Pop] Push : 스택에 자료를 밀어 넣는 것 Pop : 스택에 있는 자료를 꺼내는 것. 이 때 제일 최근에 밀어넣은 자료부터 꺼내지게 된다. Push 는 위 그림처럼 한쪽으로만 뚫려있는 스택의 출/입구에 자료를 밀어넣는 것을 의미합니다. Pop 은 위 그림처럼 한쪽으로만 뚫려있는 스택의 출/입구로 자료를 꺼내는 것을 의미합니다. 제일 최근에 집어넣은 자료인 C 자료부터 꺼내집니다. 그러면 위 그림을 예로 들어 만약 Push 순서가 A -> B -> C 라면 Pop 순서는 C -> B -> A 순서가 되겠죠. 즉, Pop 되어지는 자료들은 Push 된 자료들의 역순으로 Po..

4. Git 변경사항 확인하기

git log에 옵션을 붙여넣어 봅시다. git log -p 라고 입력하게 되면 위 사진의 가장 최신 커밋 정보인 'commit 4'와 그 아래 'commit 3' 사이에 있는 정보가 commit 4와 commit 3의 차이를 알려주는 것입니다. +++b/f1.txt 가 버전 4(commit 4의 파일)을 가리키고 ---a/f1.txt 가 버전 3(commit 3의 파일)을 가리키는 것이라고 생각해봅시다. 그리고 dev/null 이라는 정보가 뜨는 경우가 있는데 예를 들어서 git bash에 위와 같은 정보가 떴다고 가정해봅시다. 이는 commit 2 에 대한 정보가 /dev/null이고 commit 3에 대한 정보가 b/f2.txt 임을 말하는 것인데 이는 commit 2 당시에는 파일이 없었다가 co..

(2) 게이트 논리

게이트(gate)는 불 함수를 구현한 물리적 장치다. 가장 단순한 형태의 게이트들은 트랜지스터(transistor)라 불리는 아주 작은 스위치 장치들을 특정 구조로 연결해서 특정 기능을 하도록 만든 것들이다. 요새 대부분의 게이트가 실리콘 에칭(etching) 방식으로 만든 트랜지스터로 구현되며, 게이트들은 칩(chip)으로 집적된다. (게이트는 보통 단순한 칩을 가리키는데 사용할 예정이다.) 기본 게이트(primitive gate) : AND, OR, NOT 하드웨어 설계자는 이런 기본 게이트들이 서로 연결된 조합게이트(composite gate)를 통해 더 복잡한 기능을 구현한다. 논리게이트들은 내부와 외부, 2가지 관점으로 바라볼 수 있다. 내부 아키텍처 ==> 구현 (직접 게이트를 설계하련느 사람..

3. Git stage area

지난 시간에 새로 커밋할 파일들에 대해 git add 파일명 과 같은 명령어를 작성해주었는데 이렇게 되면 해당 파일은 commit이 될 준비를 마친 상태가 된 것이다. 그리고 이 상태에서 git commit 이라는 명령어를 작성하게 되면 commit이 준비가 된 상태들의 파일을 커밋해주게 된다. 이 때 커밋이 될 준비가 된 상태를 가리키는 말이 stage area이다. 예를 들어서 git add f1.txt 라고 입력하면 f1.txt 파일은 stage에 올라가게 된 것이다. 그리고 git commit 을 하게 되면 stage 에 올라가 있던 f1.txt 파일이 버전이 되는 것이다. git에는 stage와 repository 라는 개념이 존재하는데 stage : 커밋 대기를 하고 있는 파일들이 가는 곳 r..

(1) 불 논리

불 게이트(Boolean gate)는 불 함수(Boolean function)를 물리적으로 구현한 것으로 먼저 불 대수(Boolean algebra)부터 간략하게 살펴본다. [ 불 대수(Boolean algebra) ] 불 대수는 참/거짓, 1/0과 같은 불(2진수) 값을 다루는 대수학이다. 불 함수는 2진수를 입력받아 2진수를 출력하는 함수다. 불 함수를 정의하는 가장 쉬운 방법은 함수의 입력값들과 결괏값을 나란히 쓰는 방법인데 이 방법을 진리표 표현이라고 한다. 앞의 세 열은 함수 입력값이 될 수 있는 모든 2진 값 조합을 나타낸다. 마지막 열은 2^n개의 튜플 v1,v2,,,,,vn 에 대한 함수 값 f(v1,,,,vn)이다. 앞의 세 열 작성 요령은 2^n개의 절반씩 0,1을 작성해주면 된다. 위..

2. Git 버전 만들기(commit)

Git 버전 만들기를 진행해봅시다. 여기서 '버전'은 어떠한 완성된 프로그램을 가리킵니다. 완성되지 않은 프로그램은 새 버전이라고 할 수 없는 것입니다. 깃을 처음 사용하는 거라면 우리가 앞으로 관리할 버전이 우리 것임을 알려주는 정보를 작성해줘야 합니다. 이렇게 git config --global user.name 사용자명 git config --global user.email 사용자 이메일 입력해주게 되면 본인이 관리하는 버전은 모두 방금 작성한 사용자명과 이메일을 포함하게 됩니다. 이 과정은 처음 시작할 때 딱 한번만 진행하면 됩니다. 그 다음에 git commit을 입력하게 되면 git status를 입력했을 때 나오는 내용이 보여집니다. #으로 적혀 있는 부분은 무시되는 부분입니다. 우리는 이 ..

1. Git init , Git add

Git의 첫번째 과정, Git init에 대해 먼저 알아봅시다. Git Bash를 Window에 설치한 후 열어보면 기본 창이 열립니다. 거기에 'git'이라는 명렁어를 치면 위와 같이 뜨게 되는데 이렇게 되면 정상적으로 설치가 된 것입니다. pwd 라고 치게 되면 현재 자신이 어느 위치에 있는지(어떤 디렉토리 및 파일에 있는지) 알려줍니다. 그리고 이제 앞으로 저희가 해보면서 사용할 저장공간을 마련해줘야 하는데 저는 C:\Users\user\git\Project 위 주소를 사용하고자 합니다. 그러면 파일 탐색기에서 공간을 마련해주면 됩니다. 그리고 git Bash에서 해당 공간으로 이동을 해줍시다. cd명령어로 이동하면 되는데 git Bash는 리눅스 기반 명령어를 사용해서 그런지 C:\Users\us..