728x90

소스코드 243

Algorithm] Closest Pair(최근접 점의 쌍 찾기)

Algorithm] Closest Pair(최근접 점의 쌍 찾기) Closest Pair(말 그대로 최근접 점의 쌍 찾기)XY 좌표 평면 상에 존재하는 점들 중, 가장 근접한 쌍을 골라내는 알고리즘이다.가장 간단한 건, 한 점과 연결되는 모든 점들과의 거리를 계산하고이를 바탕으로 최근접 거리를 탐색하는 것이다. 이 경우 N개의 점이 있다고 했을 때 N(N-1)/2의 비교,Big O로는 N^2에 해당하는 시간복잡도가 소요된다.점의 수가 100개 내외여도 꽤나 느려지는 것이 어마어마한 단점이다. 이 때 우리가 생각해볼 수 있는 것이 분할정복 방식(Divide and Conquer)인데,부분 문제를 만들어서 계산과 비교 회수를 비약적으로 줄일 수 있다.x축을 기준으로 정렬을 수행하고(이 때 정렬은 퀵정렬로 가..

Arduino] PWM 출력으로 LED 스트립 써먹기

Arduino] PWM 출력으로 LED 스트립 써먹기 원래부터 아두이노, 임베디드 시스템에 관심이 많았던 찰나에,학교에서 기존에 하던 AVL 보드 설계를 아두이노로 대체하면서 이런저런 소자를 써보게 됐다.그전에 이미 스타터 키트라고 시중에 나와 있는 패키지를 사서 이런저런 시도를 해보긴 했지만,없는 소자들도 있어서 다방면으로 써볼 기회가 없었는데 기회를 얻었다.(물론, 3색 LED 스트립이 무슨 대단한 설정이 필요하거나 비용이 드는 건 아니었지만...)반강제적으로(?) 활용하게 되면서 경험을 쌓았다고 생각하자.아무튼 나는 돈 쓰지 않고, 소자도 얻고 경험도 쌓은 것이니까.. 영상에 사용된 소스 코드는 아래 '소스코드 보기'를 클릭하면 나온다. 1234567891011121314151617181920212..

DataStructure] C언어로 쉽게 풀어쓴 자료구조 8장 - 3

DataStructure] C언어로 쉽게 풀어쓴 자료구조 8장 - 3 C언어로 쉽게 풀어쓴 자료구조8장 Exercise 문제다.필자가 학교 다니면서 자료구조론 수업을 들었는데,과제로 제출했던 것들이고,난항을 겪고 있는 사람들에게 참고가 되었으면 하는 마음으로 올린다.자고로, 버그가 존재할 수 있으니 디버깅 작업은 필수다. 18. 앞에서 공부한 리스트 추상 자료형을 사용하여 우선순위 큐 추상 자료형을 구현하여보라.리스트 추상 자료형의 각종 연산들을 사용하라.삽입 연산은 O(1)의 시간 안에, 삭제 연산은 O(n)만큼의 시간이 걸리게끔 구현하라.여기서 n은 큐 안에 있는 요소들의 개수이다. 12345678910111213141516171819202122232425262728293031#ifndef __S_L..

DataStructure] C언어로 쉽게 풀어쓴 자료구조 8장 - 2

DataStructure] C언어로 쉽게 풀어쓴 자료구조 8장 - 2 C언어로 쉽게 풀어쓴 자료구조8장 Exercise 문제다.필자가 학교 다니면서 자료구조론 수업을 들었는데,과제로 제출했던 것들이고,난항을 겪고 있는 사람들에게 참고가 되었으면 하는 마음으로 올린다.자고로, 버그가 존재할 수 있으니 디버깅 작업은 필수다. 17. 연결 리스트(linked list)를 이용하여 우선순위 큐 추상 자료형의 각종 연산들을 구현하여보라. 1234567891011121314151617181920212223242526#ifndef __LIST_PQ_H__#define __LIST_PQ_H__#define ELEMENT_MAX 200 typedef int element;typedef struct ListNode { e..

DataStructure] C언어로 쉽게 풀어쓴 자료구조 8장 - 1

DataStructure] C언어로 쉽게 풀어쓴 자료구조 8장 - 1 C언어로 쉽게 풀어쓴 자료구조8장 Exercise 문제다.필자가 학교 다니면서 자료구조론 수업을 들었는데,과제로 제출했던 것들이고,난항을 겪고 있는 사람들에게 참고가 되었으면 하는 마음으로 올린다.자고로, 버그가 존재할 수 있으니 디버깅 작업은 필수다. 16. 정렬되지 않은 배열(array)를 이용하여 우선순위 큐 추상 자료형의 각종 연산들을 구현하여 보라. 1234567891011121314151617181920212223#ifndef __ARRAY_PQ_H__#define __ARRAY_PQ_H__ #define ELEMENT_MAX 200 typedef int element;typedef struct { element Queue[..

DataStructure] C언어로 쉽게 풀어쓴 자료구조 4장 - 3

DataStructure] C언어로 쉽게 풀어쓴 자료구조 4장 - 3 C언어로 쉽게 풀어쓴 자료구조4장 Exercise 문제들이다.필자가 학교 다니면서 자료구조론 수업을 들었는데,과제로 제출했던 것들이고,난항을 겪고 있는 사람들에게 참고가 되었으면 하는 마음으로 올린다.자고로, 버그가 존재할 수 있으니 디버깅 작업은 필수다. 29번. 이중 연결 리스트를 이용하여 숫자들을 항상 정렬된 상태로 유지하는 리스트 SortedList를 구현하여보라.앞의 문제의 연산들을 구현하면 된다. 123456789101112131415161718192021222324252627282930#ifndef __SORTED_LIST_H__#define __SORTED_LIST_H__#define TRUE 1#define FALSE ..

Etc] 유닉스에서 휴지통 만들기

나만의 휴지통 만들기 필자가 학교를 다니면서 학내 전산망에 있는 유닉스(UNIX)를 사용해보고,온갖 명령어를 입력하고 활용하는 방법을 배우면서 배웠던 것 중에 하나는 C쉘이었다.쉘 자체를 접한건, 그 이전이긴 해도 할 줄 안다라고 말하기에는 무리가 있었는데,이 기회에 꽤 많은 걸 했었다.간단한 확률 게임도 했었고, 디렉토리를 트리처럼 만들어 가시적으로 보이게도 하는 기능도 만들어보고이런저런 기능들을 하면서 나왔던 과제 중 하나가 바로, 휴지통 기능을 만드는 것이었다. 맞다, 우리가 흔히 윈도우에서의 그 휴지통.영구 삭제가 아니라 그냥 삭제 혹은 Delete키를 눌러 삭제한 파일이잠시 보관되어서 복원을 기다리거나 영구히 삭제되는 그 기능을 하는 휴지통을유닉스에서도 만들어 내는 것이 과제였다. 유닉스 환경에..

소스코드 편집기, Notepad++

IDE를 쓸 상황은 아니고, 소스 코드를 편집해야 하고, 가벼운 에디터가 필요할 때 이것을 사용하는 것을 추천한다.필자가 학교에서 배울 때에는 웹 프로그래밍과 DB 프로그래밍에서 이를 메인 에디터로 사용했었다.해당 분야에서 편집기를 메인으로 사용하는 것은 추천하지 않는다.PHP는 그렇다고 해도, HTML, CSS 개발을 할 때 이 편집기를 사용하는 건...필자는 그래서 HTML, CSS, JS는 Visual Studio for Web을 사용하고 PHP의 경우는 이클립스를 사용했다. 나는 더블모니터라서 HTML, CSS를 편집할 때마다 즉각 확인할 수 있다는 사람이라면 상관이 없지만,학생 수준에서 더블 모니터가 아닌 경우를 고려하면 이것이 WYSWYG 에디터가 아니기 때문에,내가 원하는 모양이 맞는지 확인..

Jungol] 1394 : 양팔저울

문제 주소 : http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=670&sca=4040 나는 이 문제를 수학적으로 생각해서 풀이를 진행했다. 그래서 문제 풀이에 아쉬움이 남는다.(이게 모범 답안일수도 있겠지만, 또 다른 답안이 있으리라..) 좀 더 특별한 방법이 있다면 차후에 다시 생각하여 올려보도록 하겠다. 나는 이 문제를 풀면서 토너먼트 방식을 사용했다. 물건이 몇개가 되더라도 2개씩만 비교할 수 있다는 양팔저울의 특성 상, N(N>=2)개의 물건 중 가장 질량이 큰 것이 무엇인지 정확히 알아내기 위한 최소한의 시행 횟수는 N-1번이면 된다. 가장 무거운 물건을 찾는 것은 정밀한 측정이 필요가 없기 때문에, A가 무거운지 B가 무거운지에 대한 정..

DataStructure] C언어로 쉽게 풀어쓴 자료구조 9장

2학년 당시, 과제로 제출했던 내용이다.생능출판에서 나온 'C언어로 쉽게 풀어쓴 자료구조'라는 책의9장 정렬 파트에 있었던 이론적인 문제들을 풀었는데, 그 때 풀었던 자료들이 남아 올린다.골치 아파하는 대학생들을 위해 조금의 참고자료가 되었으면 하지만,이를 그대로 복사 붙여넣기 하는 것은 자기 실력 발전에 전혀 도움되지 않는다는 사실만을 알았으면 좋겠다.

728x90