sunrin
-
(리버싱) 1. 어셈블리, 메모리 구조리버싱 2016. 6. 14. 01:31
어셈블리어 - mov, add, sub, push, pop + 레지스터 - esp, ebp, eip, eax 메모리영역 - 간단한 구조도, 스택 1. 어셈블리어 (1) MOV 가. move의 약자.나. 영어로는 "옮기다"라는 뜻이지만 여기서는 데이터를 복사한다는 뜻이다.다. source에서 destination으로 데이터를 복사한다.라. MOV [Destination], [Source]ex. MOV reg, mem (2) ADD 가. 말그대로 add나. 영어 뜻과 같이 더하다 라는 의미가 있다.다. destination에 source의 값을 더해서 Destination에 저장한다. SUB와 반대 성질을 갖고 있다.라. ADD [destination], [source]ex. ADD eax, 100-> ea..
-
[보고서] 20160511~20160522 개인프로젝트기타문서 2016. 5. 22. 15:22
2016 Layer7 개인프로젝트(자유주제) 보고서 프로젝트 명 원카드 구현 주제 자유 주제 프로젝트 명 원카드 구현 만든 이 이름 : 정종인 언어 C [본문] 1. 작품 개요 가. 개발 동기 및 기대효과 A. 개발 동기 제가 처음 원카드를 접한건 초등학교 2학년때, 친형으로부터였습니다. 그때부터 저는 원카드에 푹 빠지게 되었습니다. 다른 카드게임들과는 다르게 많은 사람들과 같이 할 수 있고, 저에게 매우 재밌었습니다. 중학교 3학년 여름방학, 처음 C를 접한 이후로 그동안 구현해보고 싶었던 많은 게임들을 구현해보았습니다. 그리고 이젠 평소 좋아 하던 원카드라는 게임을 구현해보고 싶었습니다. 또다른 동기는 그동안 갈고닦은 제 C언어 실력을 제 스스로 평가해보고싶다는 느낌이 들었습니다. 이번 기회를 통해서..
-
[중급-3]비선형구조의 탐색, 그래프의 구현강의 2016. 5. 11. 02:31
비선형 구조의 탐색:비선형 구조 : i번째 원소를 탐색한다음 그 원소와 연결된 다른 원소를 탐색하려고 할 때, 다음에 탐색할 수 있는 원소가 여러개 존재하는 구조.일반적으로 트리나 그래프 형태로 자료를 구성할 수 있을 때에 해당 비선형 구조는 단순한 반복으로 탐색할 수 없어서 스택이나 큐같은 자료구조를 통해 탐색방법과 순서를 만들어 탐색한다.비선형 구조의 대표적인 예 : 트리, 그래프어떤 임의의 정점에서 다른 정점까지 이동한다고 가정할때, 사용한 간선들의 순서로 만들어지는 집합을 경로라고 하며, 그 경로에 순환이 생기는 경우를 회로라고 한다.자기자신을 연결 : 자기간선동일한 정점과 연결 : 다중간선모든 간선의 수 : 차수 그래프의 구현 : 그래프 형태로 표현되는 문제 상황 또는 데이터 구조인접 행렬 : ..
-
(C언어)17.그래프(간단), 깊이우선, 너비우선 탐색C언어 문서화 2016. 5. 11. 02:11
주의 : 매우 간단함 그래프의 구조는 크게 두가지로 나뉘어져 있습니다. 꼭짓점, 변. 동그라미들이 꼭짓점, 선들이 변이라고 생각하면 됩니다. 한 꼭짓점에 대해서 연결된 변들의 개수를 차수라고 하며, 예를 들면, 2의 차수는 3, 3의 차수는 2, 6의 차수는 1입니다. 그래프는 무방향 그래프, 방향 그래프로 나뉘어져있으며, 무방향 그래프는 위의 그래프와 같이 변의 순서가 없는 그래프입니다.예를 들면, 4번 꼭짓점과 5번 꼭짓점 사이의 변을 부를때 (4,5)로 읽으나 (5,4)로 읽으나 같다는 소리입니다.방향 그래프는 무방향 그래프와 같이 변의 순서가 있는 그래프입니다. 서로가 서로를 가리키고 있을 때는 둘 사이의 변이 두개이며, 각각 (4,5)와 (5,4)로 읽습니다. 이 두 변은 다른 변입니다. 각각 ..
-
코드게이트2016 다녀왔습니다~[2016.5.3]기타문서 2016. 5. 8. 22:32
(위 사진은 코드게이트를 다녀와서 얻은 것들입니다.) 기억에 남는 것 1. 기말 끝나고 코엑스로 바로 출발했습니다. 도착해서 조금 놀다가 코게 갈라고 했는데 도착해보니 시간이 빠듯하더라구요 ㅎ 그래서 그냥 못놀고 경품 응모 티켓같은거 적어서 상자에 넣어놓고 바로 개최식(?)같은거 들어가서 구경했습니당. (이때 경품 응모 티켓이 나중에 결국...!) 기억에 남는것 2. 그 개최식부터 낙현이랑 (거의)떨어져서 돌아다니게 됬습니다.. 갓낙현을 찬양합시다 기억에 남는것 3. 개최식 중간에 승훈이가 없어져서 어디갔나 찾아봤는데 락픽 체험 하고 있더라구요 저도 해봤는데 처음에는 버벅거리고 뭐가 뭔지 모르겠다가 결국 도움을 받았는데 그 후론 잘만 되서 매우 신기했습니다. 기억에 남는것 4. 개최식 끝나고 (낙현이를 ..
-
[중급-2] Lower bound, Upper bound강의 2016. 5. 8. 21:55
학습 목표 :Lower bound의 개념과 방법을 이해한다.Upper bound의 개념과 방법을 이해한다. 1. Lower bound->Lower boundlower bound는 찾고자 하는 값 이상이 처음 나타나는 위치.원소가 여러개 있어도 상관 무.즉, 찾고자 하는 값 이상이 처음 나타나는 위치를 찾기 위해 쓴다.(이분탐색 방법 조금 변형하면 된다) 문제 : n개로 이루어진 정수 집합에서 원하는 수 k이상인 수가 처음으로 등장하는 위치를 찾으시오. 단, 입력되는 집합은 오름차순으로 정렬되어있으며, 같은 수가 여러 개 존재할 수 있다. 입력 : 첫줄에 한 정수 n이 입력됨.둘째 줄에 n개의 정수가 공백으로 구분되어 입력됨.셋째 줄에 찾고자 하는 값 k가 입력됨.2
-
(C언어)16.큐(Queue)C언어 문서화 2016. 5. 8. 21:26
큐는 터널이라고 보면 된다. 아주 좁은 터널.어릴적에 놀이터에서 원통을 눕힌 모양(이하 터널모양)에서 놀아본 기억이 있을것이다.상상해보자.한명이 터널 입구로 들어간다.(여기서 터널은 오로지 한사람만 지나갈 수 있고 터널의 길이는 5명밖에 못들어간다.)그 한명이 터널 출구 바로 전에서 대기한다.또다른 한명이 터널 입구로 들어간다.먼저 들어간 아이 바로 뒤에서 대기한다.이렇게 3번을 더 반복하면 터널이 꽉찬다.여기서 나와! 를 외치면 가장 먼저 터널로 들어간 아이 한명이 나온다.나머지 아이들은 한칸씩 전진한다.이렇게 4번을 더 나와!를 외치면 모두가 나오게 된다. 이걸 메모리를 이용해서 말해보자면:데이터 하나가 큐로 들어간다.(여기서 큐는 일정한 메모리마다 한명씩 들어갈 수 있고, 큐의 길이는 5이다.)그 ..
-
(C언어)15. 스택(stack)C언어 문서화 2016. 5. 8. 19:05
스택은 자료구조 중 하나이다. 특징 : 1. 먼저 들어온 데이터가 더 늦게 나간다.2. 반대로 말하면 늦게 들어올수록 더 빨리 나간다는 것이다.그림 설명 : 공간을 만들었다. 0을 PUSH 했다. 1을 PUSH했다 2를 PUSH했다 POP했더니 2가 나갔다 POP했더니 1이 나갔다 POP했더니 0이 나갔다 구현: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172#include #include int stack[100];//stack선언, 모두 0으로 초기화int cnt=0;//현재 자료의 개수 void push(i..
-
(C언어)14.링크드리스트(연결리스트)C언어 문서화 2016. 5. 8. 03:37
배열은 메모리에 값을 연속적으로 저장한다. 그래서 중간에 값을 삭제하거나 추가하려면 변할 값을 기준으로 뒤로 쭉 밀거나 앞으로 쭉 당겨야 한다.하지만 링크드리스트를 아는 순간부터 "노드"를 이용해서 값을 추가하거나 삭제하는것을 아주 쉽게 할 수 있을것이다. 링크드리스트는 자료구조의 입문이다. 그렇다. 본격적으로 메모리를 다룬다. 대충 이런식이다. 1. 추가하기 nextadd==NULL){ printf("값이 없는데요? 이게 어터케 된 일이죠? 네?\n"); break; } before=before->nextadd; temp=temp->nextadd; } } } return;} void show(){ int i; if(firstnode==NULL){ printf("값이 없어용\n"); return; } e..
-
(C언어)13.구조체C언어 문서화 2016. 4. 27. 16:11
C언어에는 많은 자료형들이 있다. int라던지 double이라던지... 지금까지 이 자료형들은 묶어서 처리할 수 없었다. 하지만 지금부터는 이야기가 달라진다. 구조체. 영어로 struct 데이터를 묶어주는 역할을 한다.배열과 다른점 : 배열은 같은 자료형의 집합, 구조체는 같거나 다른 자료형의 집합.(구조체 안에도 배열이 들어갈 수 있다.) 그럼 차근차근 절차를 밟아보자. 1. 구조체 정의하기구조체도 나중엔 자료형처럼 사용되기 때문에 꼭 정의해주어야한다.struct [구조체이름]{[자료형] [변수명];...}; 여기서 주의할 점! 구조체를 정의하는것이기 때문에 전역변수처럼 main함수 바깥에 정의해준다. 2. 구조체 선언하기구조체를 정의했으면 선언해서 직접 써야죠! "정의 된 것을 가져와서 쓰겠다!" 라..