전체 글 230

[Topcoder] SRM 413

오늘 새벽 0시에 Topcoder 를 드디어 시작했다. Topcoder를 위해 C++ 서적을 뒤벼서 문법이나 STL을 1주일간 공부하고 참여했던만큼 의미가 남달랐다. ㅎㅎ C++을 대학 졸업하고부터 거의 코딩한 적이 없었기 때문에 책을 보면서 생소하게 느껴지는 부분도 좀 있었다. 특히 그동안 몇가지 문제들을 C로 직접 Linked List같은 걸 구현해가며 풀었었는데, STL을 보고 나서는 입이 딱 벌어지는 느낌이었다. STL이나 boost나 이런 좋은 라이브러리들이 있는데.. 아직도 C로만 짜고 있는 우리회사 기술력이 한심하게 느껴지는 순간이었다. C++을 제대로 공부해보고자 Effective시리즈 책들도 주문해서 책장에 꽂아놨다. ㅡㅡㅋ; Topcoder 문제를 어제 오후에 몇개 풀어봤는데, Div2..

[GCJ] Round 1A 문제풀이

Google codejam Round 1A 문제를 풀어봤다. 주어진 v1, v2 수들에 대해 임의로 두개씩 곱한 합이 가장 작은 경우를 구하는 문제. v1, v2를 크기로 정렬한 후에 가장 큰값과 가장 작은 값을 쌍을 지으면서 곱해서 풀면 된다. ㅇ #include #include #include #define INPUT_SIZE 100000 void insertion_sort(int list[], int n) { int i, j, key; for(i=1; i= 0 && list[j] > key; j--) list[j+1] = list[j]; list[j+1] = key; } } int main() { FILE *fp; char sLine[INPUT_SIZE]; int loop_cnt; int array..

Problem Solving 2008.07.31

[GCJ] Google Codejam Qualification Round C 문제풀이

장장 7시간 정도 걸려서 푼 문제다.. 문제해법을 고민하는데 1/3정도는 고민을 한 듯.. sin, cos같은 함수를 안본지가 꽤나 오래돼고.. 원넓이 구하는 공식같은거도 기억이 안나서 찾아보면서 풀었다. 문제 요지는 파리채 구멍 영역중 파리의 중심이 위치했을때 살 수 있는 면적을 구하는 문제. 파리채의 왼쪽아래좌표와 오른쪽 위 좌표를 구해서, 면적의 모양에 따라 일일이 구해주면서 풀었다. 음 그런데. 예시의 내용이나 Smaill.in은 맞게 나오는데, Large.in을 넣으면 InCorrect가 뜬다. 무슨 이유일까 싶어 고민해 봤지만, 구체적으로 머가 틀리다는 건지가 안나와서 그냥 스킵하기로.. 소스파일 #include #include #include #define SQ(X) ((X)*(X)) #de..

Problem Solving 2008.07.31

[GCJ] Google Code Jam Qualification Round B 문제풀이

푼지는 좀 됐는데.. 기록상 올려둔다. Google codejam 2008 Qualification Round B 문제로 기차의 출발, 도착시간이 나오고, 필요한 기차대수를 구하는 문제다. NA로 가는 것들에 대해 도착시간이 늦은 순으로 정렬하고, NB로 가는 것들에 대해 출발시간이 빠른 순으로 정렬한 후, 최대한 안기다리고 바로바로 출발하도록 짝을 지어주면, 필요대수가 나옴.. list.c 소스 #include #include #include #include "link.c" #define INPUT_SIZE 100 void readList(ListNode *list_head, ListNode *list_head_R, int type, FILE *file_ptr, int list_cnt, int t); ..

Problem Solving 2008.07.31

[UVA] UVA 101 문제풀이

어제에 이어 오늘은 UVA 101 번을 풀어봤다. 100번과 비슷한 난이도겠지 싶었는데.. 꽤 시간이 걸렸다. 문제이해하는 것도 좀 오래걸리고;; 힘들게 linked list 이용해서 풀어서 제출했는데.. Time 초과라고 나오네;; 수행시켜보니 포인터로 처리해서 시간 별로 안걸리는데.. UVA쪽하고 환경이 안맞거나 머 그런듯하다.. 머 문제는 풀었으니.. 푼 것으로 하고 넘기기로.. list.c 소스 #include #include #include #include "link.c" #define INPUT_SIZE 10000 int main() { char sLine[INPUT_SIZE]; int i; char delim[] = "' '"; char command[10]; char command_to[1..

Problem Solving 2008.07.31

[UVA] UVA 100 문제풀이

UVA 라는 사이트를 알게 됐다. 알고리즘 문제들이 있고, 소스를 올려서 본인의 랭킹같은거도 나온다. 재미삼아 제일 첫번째 100번 문제를 풀어봤는데.. 그리 어렵지 않았다. include #include #include #define INPUT_SIZE 10000 int cycleLength(int n, int len) { len++; if(n == 1) return len; if( (n % 2) == 0 ) n = n / 2; else n = 3 * n + 1; return cycleLength(n, len); } int main() { char sLine[INPUT_SIZE]; int i; char delim[] = "' '"; int value1, value2; int small, large, l..

Problem Solving 2008.07.31

[GCJ] Google Code Jam Qualification Round A 문제풀이

어제 Google code jam(GCJ) Qualification Round가 있었다. 어제는 업무때문에 볼 여력이 없었는데, 오늘 시간이 좀 나서 어제 기출문제(?)를 한번 풀어봤다. 문제는 A, B, C로 나오고 각 문제별로 Smaill Input, Large Input 으로 나와있다. 문제 A는 비교적 금방 이해되어서 C 문법도 공부해볼겸 C로 짜봤다. 처음에 그냥 배열로 하다보니 반복처리하는거도 잘 안되고 해서 Linked List를 간단하게 구현해서 완성했다. ㅋㅋ 나온 output을 검증해보니 smaill 과 large 모두 한번에 Correct 다. 오호; 이맛에 프로그래밍을 하는군..싶다. 문제는 다음과 같고 Smaill파일과 Large 파일이 제공됐다. Problem The urban ..

makefile 에 대한 정리

가끔 makefile을 쓰면서도 기존에 쓰던걸 편집해서 명령어 단축키용도로만 써왔던거 같다. 책을 보다가 makefile이 의존성을 나타내는 기능이 있다는 걸 알고 정리겸 포스팅을 한다. 1. makefile의 기본형식 타켓(목표이름): 대상(조건파일) 명령어 2. 의존성 - 오른쪽 대상에 변경사항(파일의 변경시간 기준)이 있을 경우 왼쪽 타켓을 다시 실행 3. 생략형 $@ 목표 이름 $* 목표 이름에서 확장자가 없는 이름 $

리눅스 및 DB 2008.07.17

[리눅스] 시그널에 대하여

GNU 소프트웨어로 프로그래밍하기 라는 책을 보고 있다. make file의 각종 옵션이나 gdb같은 디버그 툴에 대해 평소 잘 몰랐던 의문들이 많이 풀리는 느낌이다. 그 와중에 시그널에 대한 내용이 있어, 평소 인증 소스상에 있던 sigset(SIGINT, SIG_IGN) 등의 문구가 기억나서 해당 내용을 조금 찾아봤다. 네트워크 프로그램 개발시에 알아두면 좋은 내용들.. 기본적인 시그널 정도는 기억하고 있자. 우리는 흔히 kill -9 pid로 9를 주면서도 9가 의미하는게 먼지 모르고 할 경우가 많다. 9가 SIGKILL 로 정의되있기 때문에 9를 주면 SIGKILL 시그널을 프로세스에 전달해 준다. 시그널 이름 설명 SIGHUP 터미널을 읽어버렸을때 발생한다. SIGABRT 프로그램의 비정상종료시..

리눅스 및 DB 2008.07.15

[책] 행복한 프로그래밍

임백준씨가 쓴 책들을 골라서 읽느라 본 책이다. 임백준씨의 책들이 대체로 프로그래밍의 재미에 대해 깨닳게 해준다는 측면에서 다른 책들과 유사한 느낌이었다. 간간히 나오는 문제를 풀어보는 재미도 쏠쏠했고, 수학관련 서적을 다시 한번 뒤적거리고 싶게 만들었다. 그리고, 프로그래밍의 고수가 되려면 '수학이나 알고리즘, 패턴 등으로 대변될 수 있는' 내공과 '다양한 프로그래밍 경험과 체험을 대변하는' 외공을 두루 갖추어야 한다는 점을 짧은 무협소설을 통해 잘 설명해 주고 있었다. 대부분의 개발자들이 본인이 사용하는 프로그램 언어나 API에 익숙해 지고 나면, 프로그램만 계속 해서는 더 발전이 없는 경우가 많다. 즉, 내공이 부족하여 외공수련만 해서는 더 늘지 않는 것이다. 3년차 개발자와 7년차 개발자의 차이는..

책 이야기 2008.07.14
반응형