스택 자료구조의 선언부를 먼저 살펴보자. 스택의 구조체 정의는 다음과 같다. #define MAX_STACK_SIZE 100// 스택의 최대 크기 typedef int elem_t; elem_t get_next(); char* str(elem_t e); void free_elem(elem_t e); typedef struct { elem_t data[MAX_STACK_SIZE]; int top; } stack_t; 여기서 중요한 점은 elem_t라는 타입 이름이다. 이것을 이용하므로써 요소 타입이 무엇이든 상관없이 스택 구조체와 함수들을 이용할 수 있게 된다. 예를 들어 maze를 이용하는 경우라면 벽인지, 길인지를 나타내는 문자를 스택에 넣을 요소로 사용할 수 있다. 그 경우는 typedef char ..
이번 학기 자료구조를 맡게 되어 C 언어로 자료구조를 구현하는 것을 연재해 볼까 합니다. 30년 전에 공부한 자료구조를 새로 펼쳐보니 새롭기도 하고 제대로 구현해 보는 게 C 공부에 도움이 많이 될 것 같아서 연재를 시작하게 되었습니다. 자료구조 기본 코드는 생능출판사의 C 언어로 쉽게 풀어쓴 자료구조 책과 그외 인터넷에서 참고하였습니다. 기본 코드에서 코딩스타일이나 출력 방식 등은 제가 수정하여 사용했습니다. 그리고 대부분의 자료들이 각 자료구조의 ADT에 대해 기능별 알고리듬 위주로 설명되어 있으나 저는 직접 돌려보면서 사용할 수 있도록 입력과 출력을 위한 기능을 추가해 보았습니다. 그리고 추가, 삭제 같은 것을 지원할 수 있게 만들어보려고 합니다. 자료구조 한 학기 수업으로는 사실 자료구조에 대해 ..
이 사이트에 올라간 파이썬 관련 글을 이용하여 파이썬을 공부하는 차례를 정리해 보았습니다. 글이 올라간 순서가 왔다갔다해서 혼란이 있을 것 같아 초보 단계부터 차례로 심화하는 과정을 나열해 보았습니다. [1] 기초 단계 (파이썬 프로그래밍을 해본 사람이라면 이 단계는 건너뛰어도 됩니다) Python 시작하기 (1) - 대화모드와 소스파일 실행 Python 시작하기 (2) - 프로그램 구조, 타입과 변수 Python 시작하기 (3) - 입출력 기본 파이썬 시작하기 (4) - 연산과 수식 파이썬 시작하기 (5) - 문장 if와 for[ [2] 복합타입 - 스트링과 리스트, 튜플 (기본적인 내용도 포함하고 있지만 중요한 개념을 정리하기 위해 일독을 권합니다) 파이썬 스트링 파이썬 리스트 진위형과 진위 수식(b..
openbookproject의 Beginning Python Programming for Aspiring Web Developers 5장 번역 [Copyright Notice] 6. 사전 (dictionaries) 6.1. Dictionaries 사전은 앞에서 배운 리스트, 튜플, 스트링같은 시퀀스와는 좀 다른 복합타입이다. 이것은 파이썬에서 제공하는 빌트인 매핑 타입이다. 즉 키(key)를 값(value)에 매핑시켜주는 자료구조인데, 키는 불변 타입이어야 하고 값은 리스트나 튜플 등 어떤 값이나 가능하다. 이러한 키-값 쌍(key-value pair)은 모든 프로그래밍언어에서 지원되고, 컴퓨터 프로그래밍에서는 매우 자주 사용된다. 예를 들어 영어 단어를 한국어로 번역하는 사전을 만든다고 가정해 보자. ..
이 글에서는 포인터에 대해 살펴보겠습니다. 포인터는 C 언어에서 제일 어려운 부분인데요, 사실 자바나 파이썬 같은 언어에는 포인터가 없기 때문에 C 보다 배우기 쉽습니다. 그만큼 포인터가 어려운 개념이지만 그래도 공부해야 하는 이유는 뭘까요? 포인터를 알면 프로그램이 메모리를 사용하는 방식을 이해하고 컨트롤할 수 있습니다. 그래서 알고리듬 시험이나 코딩테스트를 준비할 때 덮어두었던 C를 꺼내서 공부하고 C++을 새로 배우기도 합니다. 이들 언어는 포인터가 있어서 빠르고 메모리를 적게 사용하는 프로그램을 짤 수 있기 때문입니다. 그럼 이제 포인터에 대해 본격적으로 살펴보겠습니다. 포인터란 다른 변수의 주소를 가지고 있는 변수입니다. 그럼 변수란 무엇인가? 변수란 메모리에 어떤 데이터를 저장할 수 있는 공간..
이 글에서는 구조체에 대한 용어와 개념을 소개하겠습니다. 구조체를 어떻게 정의하고 사용하는가와 메모리 할당 등에 대해 살펴봅니다. 강의노트를 이용해 설명해 보겠습니다. 구조체란 타입이 다른 데이터를 하나로 묶는 방법입니다. 배열은 타입이 같은 데이터만 묶을 수 있죠? 근데 우리가 프로그래밍을 하다 보면 서로 다른 타입의 데이터를 묶어서 관리해야 할 일이 많이 생깁니다. 구조체는 그런 데이터를 이름을 붙여서 필드로 관리하게 됩니다. 예를 들어 학생을 나타내는 구조체라면 이름, 나이, 점수를 가질 수 있는데 이름은 문자열이고 나이는 int, 점수는 float로 표시되어야 한다면 구조체로 이들 세 개의 값을 묶어서 관리하면 편리하겠지요? 구조체는 먼저 선언을 해주어야 합니다. 구조체 안에 어떤 필드가 있는지 ..
5. Functions openbookproject의 Beginning Python Programming for Aspiring Web Developers 5장 번역 [Copyright Notice] 사람들은 머릿속에서 한번에 여러 개의 데이터와 정보 조각을 다루는데 익숙하지 않다. 연구 결과에 의하면 대부분의 사람들은 한꺼번에 최대 7개의 일을 다룰 수 있다. 컴퓨터는 반면 수천 개의 일도 동시에 기억하고 다루는데 문제가 없다. 사람이 수천줄에 달하는 복잡한 프로그램을 작성할 수 있게 하기 위해 프로그래밍 언어는 프로그래머가 여러 개의 명령문 연속에 이름을 붙이는 추상화라는 기능을 제공한다. 이 이름은 나중에 그 세부적인 사항을 알 필요없이 그 명령문들을 가르킬 수 있다. 이 장에서 다루는 함수는 파이..
3. Strings, lists, and tuples openbookproject의 Beginning Python Programming for Aspiring Web Developers 3장 번역 [Copyright Notice] 이전글에서 이어집니다. 3.7. 리스트는 변경 가능하다(mutable) 시퀀스의 세 가지 타입 중에서 스트링과 튜플은 값을 변경할 수 없다(immutable objects). 값을 변경할 수 없다는 의미는 객체가 일단 한번 만들어지면 그 객체의 요소의 값을 변경하거나 삭제, 추가할 수 없다는 의미이다. 만약 요소의 변경이 필요하다면 새로운 객체를 만들어야 한다. 그러나 리스트는 요소들을 변경할 수 있다. 가장 쉽게는 지정을 이용해서 요소의 값을 바꿀 수 있다. 인덱스 표현의 요..
3. Strings, lists, and tuples openbookproject의 Beginning Python Programming for Aspiring Web Developers 3장 번역 [Copyright Notice] 3.1. Sequence data types 이전까지는 파이썬에 들어있는 기본 타입들인 int, float, str 타입을 배웠다. int와 float는 수치 타입이라고 하며 숫자를 표현한다. 사칙연산이나 비교연산, % 연산 같은 수치 연산자를 이용하여 수치 수식을 만들 수 있다. 이런 수식들을 포함한 파이썬 프로그램은 실행에 의해 수식의 결과를 우리에게 보여준다. 프로그램이란 입력과 출력을 가지고 수식과 지정문, 조건문과 반복문으로 구성된 코드 부분을 뜻한다. 여기서는 여러 ..
openbookproject.net의 "Beginning Python Programming for Aspiring Web Developers"에서 일부 발췌 번역 진위값과 진위형 이번 글에서는 참이나 거짓을 나타내는 타입인 진위형(boolean type)을 살펴본다. 참 거짓을 이용하여 식을 표현하고 계산하는 수학 분야를 Boolean algebra라고 한다. 이것은 오늘날 컴퓨터 수학의 기본이다. 더보기 [주] 컴퓨터는 진위값이 참이냐 거짓이냐에 따라 실행 흐름을 다르게 할 수 있다. 이것 덕분에 컴퓨터는 단순한 계산기가 아니라 범용적인 즉 무슨 일이든 할 수 있는 기계가 된다. 진위값(boolean values)은 두 가지가 있다. True와 False다. >>> type(True) >>> type(..
- Total
- Today
- Yesterday
- ToString
- contentEquals
- python example
- contains
- 패턴
- APPEND
- format
- zip
- 콜렉션
- 이터러블
- Iterator
- rust
- 스트링
- TypeError
- typedef
- indexof
- 스트링 +
- max
- comparable
- CompareTo
- Lazy evaluation
- C++ 클래스
- 이터레이터
- 지연계산
- follow
- python exercise
- 자바regex
- 동적바인딩
- Camel Style
- sort key
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |