'공부'에 해당되는 글 3건

  1. 2008/02/10 UVa 100문제 달성!!! (3)
  2. 2007/01/18 Direct X를 공부한 책들~ (6)
  3. 2007/01/16 내가 공부하는데 가장 방해가 되는건.. (6)
사용자 삽입 이미지

http://acm.uva.es/p 에 있는 2000여개의 문제중 드디어 100개를 풀었습니다 [....] 제작년에 ACM-ICPC라는 대회를 접하게 되면서 Programming Challenges를 사서 공부를 했었는데, 두달정도의 준비기간동안 충분한 준비를 하지 못해서 고배를 마셨던 기억이 [......] 있는데요, 산업기능요원으로 복무하는동안 알고리즘 문제를 풀면서 실력을 차곡 차곡 쌓고자 위 사이트의 문제를 풀기 시작했습니다.

이번에 풀면서 어려운 문제는 전혀 안건들었어요. 쉬운문제가 2000개중에 100개는 있겠지! 라는 생각으로 간단한 수열혹은 규칙만 사용하는 문제들을 골라골라 풀어서 100개를 달성했습니다. (이중에는 큐나 스택등의 초 간단한 자료구조를 필요로 하는 문제도 있었던거 같아요. 왠만해서는 안풀었습니다만..... 정확히 기억이 -_____-;;) 문제를 풀면서 "팩토리얼" 과 ,"소수"을 가지고 얼마나 문제를 울궈먹을 수 있는지를 느낄 수 있었습니다. 무슨 변형문제가 그렇게 많은지.. ( 쉬운 문제의 기준은 http://felix-halim.net/uva/hunting 와, 개편된 uva의 문제 사이트인 http://icpcres.ecs.baylor.edu/onlinejudge/ 의 %를 참고했습니다.)

어떤 문제는 당황스럽게까지 했는데, 600자리의 정확도를 요하는 문제인듯 보였으면서 double형으로 계산해도 Accepted가 뜨는 문제도 있었어요, 영어 해석이 전혀 되지 않아서 http://acm.uva.es/board 에 풀이를 올려준 글을 보고 풀었던 문제도 있고(완소 board♡)... 쉬운줄 알고 덤볐다가 전혀 갈피를 잡지 못하고 결국 gg친 문제도 있습니다.

문제를 풀면서 느꼇던 점들은 http://uva.xo.st 에 올렸는데, 올린 날짜들을 보니 작년에 쉬운거 100문제 풀기를 도전했을때 잠시 반짝 하고 그간 너무 띄엄띄엄 풀었다는게 눈에 확 띄네요. 반성반성.

쉬운문제 100개정도 풀고 어려운 알고리즘 공부를 하자 라고 다짐을 했었으니, 이제 알고리즘 공부 본격적으로 해야 하는데.... 사둔 알고리즘 책은 이미 5권을 넘어섰고, 그 내용또한 간단한게 아닌데다가 회사 프로젝트는 점점 빡빡해지고 영어공부랑 자격증 취득 계획도 있어서 언제 공부가 가능할련지 모르겠습니다. ㅠㅠ... 적어도 Introduction to Algorithms에있는 내용의 반 이상은 알고(사실 거의다 아는게 희망사항!), STL은 모두 사용할 수 있을정도의 실력은 키우고 싶은데 말이죠..

학부 2학년에 있던 자료구조및알고리즘 시간에 나름대로 열심히 수강을 했고, 그때는 배운걸 직접 손수 구현이 가능했는데 지금은 솔직히 불가능합니다 -_-.. 그때 배웠던 책을 꺼내들고 다시 복습한 다음에 Introduction to Algorithms이나 The Art of computer Programming을 읽어야 겠어요..

언제나 하고싶은건 많고 해야할 일도 많은데 시간이 부족한거 같습니다.ㅜㅜ
 
여담이지만.. 요즘 The Secret이란 책을 읽고 있는데, 그 책에서 "시간이 부족하다" 라고 생각을 하면 정말 시간이 부족해진다던데.. "난 시간이 충분해^^" 라고 생각을 하며 진짜로 그렇게 믿고 살아야 한답니다. (말이 좀 이상하네요 ^^;;)
Posted by Mastojun
공부/읽은책2007/01/18 15:43

 

User inserted image

User inserted image
게임 회사에 입사한지 한달 하고도 14일이 더 지나갔다.

2년전 05년도 1월인가 2월에 Team SnTi에서 진행했던 스터디에서 DirectX를 공부하기 위해 선정했던 책이 3D게임 프로그래밍, 한빛미디어의 책이였다.

우리나라 서적치고는 굉장히 깔끔하고 기초부터 자세히 서술되어 있던 책. 하지만 무언가 부족한 느낌이 들었던 책이다. 너무 급하게 내용이 전개되는거 같다는 느낌이 들었달까? 충분한 설명없이 어려운것은 그냥 넘어가자~ 라는 느낌이 들었던 책이였다.

DirectX 9를 이용한 3D GAME 프로그래밍 입문은 구입한지는 1년이 넘었지만 게임회사에 입사하고 나서 읽기 시작한 책이다. 이 책은 3D게임 프로그래밍에는 없던 보다 더 자세한 내용이 담겨 있다. 그렇지만 이 책은 너무 기본적인 내용들만 담겨져 있달까? 3D 게임 프로그래밍에 있던 스키닝에 대한 거나 에니메이션에 대한거, LOD나 쿼드트리 컬링 등등

어떤책을 먼저보는게 좋을까요? 라고 누가 뭍는다면 난 DirectX 9를 이용한부터 보고 3D게임프로그래밍 보라고 권하고 싶다.

이제 겨우 두권봤다. 그것도 게임프로그래밍의 초보중의 초보들이 보는 책을 이제야 다 봤다. 각 책을 두번 이상씩을 읽긴 했지만 문제는 처음부터 DirectX가지고 프로그램을 만들어본게 한개도 없다는것. 프로그래밍에 있어서는 책을 많이 읽는것보다는 얼마나 많이 코딩해보았느냐가 실력에 더 많은 영향을 끼친다고 하니.. 이젠 간단한 개인 프로젝트라도 진행해 봐야겠다.

다행히 회사내에서 간단한 게임만드는거라면 그래픽 작업을 도와준다는 디자이너분도 있으니.. :D

Posted by Mastojun
일상 이야기2007/01/16 16:00

"공부하는데 방해가 되는것이 무엇이 있는가?"

여기에는 여러가지의 요소가 있을것이다. 쉴세없이 떠들어대는 TV나, 띠리링 하며 하단에서 반짝거리며 글을 쳐 넣어주길 기다리는 메신져들이나, 포털사이트 입구에 떡 떠있는 자극적인 헤드라인의 기사들과 주위의 잡음등등 이류를 들자면 여러가지가 있다.

요즘 내가 격고 있는 방해꾼은 이런 외적인 요소는 아니다. 공부하면서 내가 기존에 알고 있던 사실들에 대한 지식의 단편성, 편견, 혹은 아집들 때문이다.

예를들면 이런거다.

난 초등학교 1학년때 고학년 선배가와서 4-6 은 무엇이냐? 라는 질문을 했었다. "음수" 라는 개념을 알고 있지 못했던 초등학생때는 계산을 할 수가 없었고, 도무지 이해가 되지 않는 문제였다.

C언어에서도 비슷한 경우가 있다. 많은 초급자용 입문책엔 if문을 설명할때 이런식으로 간단하게 설명한다 (물론 내가 운영하고 있는 홈페이지에도 그런식으로만 설명해놓았다)

if(비교문)
  비교문이 참일때 실행시킬 문장;

중학교 2학년때부터 C언어 관련 책을 보았었는데, 대학생이 될때까지 4년동안 if문 다음에는 정말 "비교문" 만 들어갈 수 있는줄 알고 있었다. if(scanf("%s", szInput) && *szInput); 이런문장이 이해될리가 없다. 엄밀히 따지자면 비교문이지만 scanf라는 명령어가 들어간다는것 자체가 "순수한 비교문만 들어갈 수 있다" 라고 생각하고 있었을때에는 떠올릴 수 없는 발상이였다.

대학교 1학년때 C언어 시험기간에 친구들을 대상으로 강의를 해준적이 있다. 이때 for문으로 구구단을 짜는걸 설명해 준적이 있었는데..
for(int i = 2; i < 9; i++)
    for(int j = 2; j < 9; j++)
이란 문장을 보고 친구들이 했던 질문이 생각난다. "for문 안에 또 for를 쓸 수 있는거야?" 우리가 배웠던 교재에는 중첩for문이라는 단원이나 문장이 없었기 때문에 이를 몰랐던 친구들로서는 발상이 쉽진 않았던거다. (다행이도 내가 처음공부했던 GW-BASIC관련 책에는 중첩for문이라는 단원이 따로 존재했다)

가장 최근에 고민했던것은 3D프로그래밍에서 쓰는 수학관련..
고등학교때 행렬을 배울때는 이런식으로 배운다. (x, y)좌표를 회전하는 행렬A가 있을때 (x, y)를 2행1열로 만들고, 회전행렬 A를 앞에다. 그리고 2행 1열로 만들어진 좌표 행렬을 뒤에다가 곱해서 회전된 좌표의 값을 구했다. 따라서 A변환을 하고 B변환을 할경우 곱하는 순서는 B A 좌표 순으로 되어야만 했다.
그런데... DirectX로 프로그래밍을 하다보니 A변환후 B변환을 해야 해서 BA를 곱하고 그 결과로 적용을 시켰더니 뭔가 이상하게 나온다. 아무리 생각해도 이건 이상했다. 나중에 속는셈치고 순서를 AB로 바꾸어 적용시켰더니 그제서야 제대로 나온다.
얼마전에 DirectX에서는 좌표를 3행1열로 저장하지 않고 1행 3열로 다룬다는걸 알게 되었다.

좀더 넓은 시야를 가지고 공부를 해야 한다. 기존에 알고 있던걸 맹목적으로 신용하지 말고 비판하는 태도로 공부를 해야 한다.. 사실 지금도 얼마나 머리속에 편견을 가지고 공부를 하고 있는지도 모른다..

Posted by Mastojun
TAG 공부