프로그래밍/알고리즘 5

쉬운 스택 알고리즘 - C언어

처음 스택에 대해 배울때 스택이 무엇을 말하는 건지는 알겠으나 도대체 어떻게 써먹는지 이해가 되지 않았다. 현재 알고리즘 책 두 권을 가지고 있는데 이 책들에 써져있는 스택을 빡공 하려했으나 이 책들에선 처음엔 쉽게 스택은 이렇고 이런거다 LIFO(Last In First Out)방식이다 라고 아주 기초적인 설명하면서 정작 스택 코드를 설명할땐 갑자기 안써도될 구조체 나오고, 선행처리기 나오고, 사용자 정의 함수를 사용해서 엄청 복잡하게 설명하기에 바로 기가 팍 죽어서 스택이라는 함수가 있고 이 모든걸 다 외워야 한다는 생각에 빠지게 만들었으나. 공부를 하다가 유레카. 스택은 함수가 아닌 그저 풀이방식 즉 알고리즘의 일종이며 이건 그냥 내가 쓰기에 달렸다는 것을 깨달았다. push 고 pop이고 그냥 다..

4. do it! 03-1 검색 (선형, 이진) ,복잡도 - C언어

최근 교재 두개를 가지고 공부하다보니 공부할때 겹쳐지는 챕터는 두 교재 모두 다른 방식으로 설명하기 때문에 더 이해가 되서 좋다. 용도나 목적, 실행 속도, 자료구조 등을 고려하여 알고리즘을 선택해야 합니다. 선형 검색 (순차 검색) 무작위로 늘어놓은 데이터 모임에서 검색을 수행합니다. 원하는 키 값을 갖는 요소를 만날 때까지 맨 앞부터 순서대로 요소를 검색 ex) a[0] 과 원하는 키 비교 -> 틀림 -> a[1]과 키 비교 -> 틀림 -> a[3]과 비교 이때 종료조건이 1. 배열이 끝을 지나간 경우 2. 검색할 값과 같은 요소를 발견 한 경우 이렇게 두가지를 가지게 되는데 이 종료조건을 검사하는 비용도 만만치 않기 때문에 이를 해결하는 방법으로 보초법(sentonel method)이 있다. 보초법..

2. do it! 02-1 기본 자료구조 (포인터, 배열, 난수(랜덤 수))- c언어

챕터 2에 들어가자 마자 배열을 설명하면서 배열의 크기 선언에 대해 설명하는데 중간중간에 내가 좀 어려워하는 포인터도 들어가서 하나하나 따라해보면서 이해해보려고 했다.. 했었으나.... 하핫 처음 코드부터 개같이 멸망 ㅎㅎㅎㅎㅎ 뭐라하는지 봤더니 호환되지 않는 유형 'void *'에서 'int *'에 할당됨 음음 코드에 대한 설명은 호출한 calloc 함수는 지정된(1 * sizeof(int) 바이트) 크기의 메모리를 힙 영역에 할당하고, 할당한 메모리의 첫번째 주소를 반환합니다. 할당한 메모리가 필요없어지면 포인터를 free 함수에 전달해 메모리를 해제합니다. 라고한다! 자료형이 int형이고, 요소 개수가 n인 배열 생성 calloc(n,sizeof(int)) 포인터(pointer)란? 객체(변수) 또..

1. do it! 자료구조와 함께 배우는 알고리즘 입문 - c언어

요즘 백준 문제만 무작정 풀기엔 코딩 활용 능력은 점점 좋아지고 있지만 프로그래밍에 대한 기초 지식이 부족해서 문제를 못풀겠다는 느낌도 들고 코딩에서 알고리즘이 굉장히 중요하다는 말에 유명한 알고리즘 관련 책들을 2,3개 샀지만 내가 이해하기엔 조금 난해한 책들이 많아 기초부터 해야겠다는 생각에 이 책을 사게 되었다. 1챕터인 기본 알고리즘을 풀고있는데 이 단원은 기본이다보니 그리 어렵지 않았기에 블로그에 안올리려고 했으나 연습문제 푸는 와중에 3항 연산자라던가 평소에 쓰던 반복문을 다른 방식으로 사용하는 것이라던지 재미있는 사용방법이 떠올라 이렇게 작성하게 되었다. chap 1. Q11 - 자릿수를 출력하는 프로그램에서 평소에는 #include int main(){ int a,b=1; scanf("%d..