HW#01 : 피보나치 수열의 값 찾기 문제에 대한 두 가지 접근법에 대한 일반화HW#01 : 피보나치 수열의 값 찾기 문제에 대한 두 가지 접근법에 대한 일반화

Posted at 2011. 3. 17. 11:16 | Posted in Computer Science/알고리즘

피보나치 수열에서 알고리즘의 접근은 Sequential Approach와 Divide and Conquer Approach가 있었다. 이 방법에서 Divide and Conquer Approach가 Sequential Approach 보다 효과적이지 못하다는 것을 배웠다. 그러면 우리는 이 문제에 대해 일반화 시킬 수 있을까? 그것이 첫 번째 숙제이다.

My Solution)
두 가지 접근 방법이 있다고 가정하자. 하나는 Sequential Approach이고 다른 하나는 Divide and Conquer Approach이다. 우리의 목표는 집합에서 원소를 찾는 문제와 피보나치 수열 문제를 통해 일반화된 요약을 도출하는 것이다.

집합 : 유한 원소를 다룬다.
피보나치 수열 : 재귀 형태로 미지수 x에 따라 값이 변화한다.

Domain이 지정되어 있다면 Divide and Conquer Approach가 Sequential Approach보다 효율적이고, Domain이 지정되어 있지 않다면 Sequential Approach가 Divide and Conquer Approach보다 효율적이다.

Instructor's Solution)
하위 문제가 Overlapping이 많이 발생하는 경우, 분할 정복 접근보다는 순차접근이 효과적이다.

결과 : B

//

01주차 : 시장경제 역사의 교훈 (1)01주차 : 시장경제 역사의 교훈 (1)

Posted at 2011. 3. 16. 20:13 | Posted in 교양/시장경제특강

시장경제 역사의 교훈 (1)


컴퓨터공학부 4학년 김진욱


우리가 대학에서 배우는 것은 인간에 대해 공부를 한다. 공학 역시 마찬가지다. 그럼 공학이란 무엇인가? 인간을 기계로 모델링한 것이 공학이다. 이처럼 우리는 가깝게는 인간에 대해 공부하고 크게는 인간이 사는 사회에 대해 공부한다. 인간이 사는 사회를 모델링한 것이 컴퓨터 네트워크이다. 이러한 네트워크는 과학적이고 시스템적이고 논리적으로 동작하는 체계를 갖추고 있다. 그러면 인간이 사는 사회에도 체계가 있을 것이다. 그것은 자본주의이고 자세히 들어가면 시장경제가 있다. 그러면 우리는 자본주의가 뭔지 경제가 무엇인지 시장경제가 무엇인지 공부해 보아야 할 의무가 있다.

금일 수업의 첫 주제는 "역사로 본 국가의 경쟁력"이다. 즉 시장경제의 중요성을 역사적으로 살펴보는 시간 이였다. 소위 우리가 말하는 잘 사는 국가, 수치로 표현한다면 일인당소득이 높은 국가들은 대부분 서구 국가들이다. 이러한 서구 국가들은 어떻게 잘 살게 되었는가? 라는 질문에 답을 찾기 위해 역사를 살펴보기로 했다. 수업 시간에 김승욱 선생님께서 보여주신 다양한 역사적 자료(영화 300, 노예매매, 정화제독의 보선, 산업혁명)를 보면 서구 사회가 잘 살게 된 것은 정말 기적이라고 표현할 수 있었다. 결국 서구 사회가 잘 살게 된 것은 당연한 결과도 아니고 제3세계의 식민지 착취도 아니고 전쟁도 아니다. 바로 시장경제제도의 창출 때문이다.

강의를 듣는 내내 흥미진진하였다. 우리가 보고 있는 것이 정말 객관적으로 올바르게 보고 있는 것인지 다시 한 번 생각해 보게 되었다. 특히 서구 사회가 잘 살게 된 것은 식민지 착취라고 생각하였는데 여러 반론을 들어보면서 많이 알아야 진실이 보인다는 생각을 하였다. 앞으로의 강의를 통해 잘못된 생각은 바로 잡고 시장경제에 대해 탐구해 보아야겠다.
//

Assignment 01. 단방향 Talk 프로그램Assignment 01. 단방향 Talk 프로그램

Posted at 2011. 3. 16. 17:40 | Posted in Computer Science/네트워크응용설계

이번 과제는 아주 재미있는 Socket 프로그래밍이였다. JAVA 언어를 이용하여 작성하는 것이였는데 Socket을 생성하고 Object를 주고 받는 것은 간단하지만 예외 처리가 복잡하였다. 이는 사실 당연한 결과이다. JAVA 언어는 추상화와 계층화를 잘 하여 프로그래머를 바보로 만든다. 하지만 그런 장점 뒤에는 예외 처리라는 것이 존재한다.

친구들의 숙제를 보면서 정말 사람마다 생각이 많이 다르다는 것을 느꼈다. 나의 경우 Socket에 연결한 Filter는 ObjectInputStream과 ObjectOutputStream이였다. 그리고 이것을 넘겨주기 위해 readObject와 writeObject 메소드를 호출하여 String 클래스를 넘겨주었다. 하지만 어떤 친구는 read 메소드와 write 메소드를 사용하여 char[] 형태를 넘겨주었다. 단순 Talk 프로그램이라면 이러한 char[] 형태로 넘겨주어도 괜찮지만 클래스를 넘겨줄 때는 readObject 메소드와 writeObject 메소드를 넘겨주는 편리하다.
//