Microsoft MVP성태의 닷넷 이야기
도서 - 누워서 읽는 알고리즘 [링크 복사], [링크+제목 복사]
조회: 12400
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

도서 - 누워서 읽는 알고리즘

알고리즘 책 하나 추천합니다. ^^

누워서 읽는 알고리즘
; http://www.yes24.com/24/goods/6116357?scode=032

참고로, 책의 내용 중에서 한 가지 아쉬운 점을 이야기해 보면.

"03. 데이터 구조 정의하기" 절의 32페이지에 보면 포커 카드에 대한 데이터 구조를 정의하라는 요구 사항에 다음과 같은 식의 정의를 했다고 나옵니다.

struct card {
    char *shape;
    int number;
} cards [] = {
    "spade", 1,
    "heart", 1,
    .......
};

하지만 면접관이 마음에 들어하지 않음을 눈치채고 이어서 다음과 같이 바꿨다고 했는데요.

struct card {
    char shape;
    int number;
} cards [] = {
    'C, 1,
    'H', 1,
    .......
};

이렇게 했는데도 '질문자의 양미간이 움직였다'고 표현하고 있으며, 더 개선한 답을 내지 않고 이 상태에서 이전 방법과의 '시간', '공간'이 대립한다는 식으로 설득을 했다면서 마무리 짓고 있습니다.

제가 그 면접관은 아니지만... 아마 기대했던 답은 위의 2가지 장점을 모두 취한 답이 아니었을까 생각해 봅니다. 다음과 같은 식으로.

enum cardType
{
    DIAMOND,
    SPADE,
    .......
};

struct card {
    cardType shape;
    int number;
} cards [] = {
    DIAMOND, 1,
    SPADE, 1,
    .......
};

저 책의 초판이 2003년이라고 나오는데, 벌써 12년이 지났으니 아마도 지금은 저자도 알고 계시지 않을까 싶습니다.

그리고 한 가지 더 살짝 개인적인 의견을 언급하면.

144페이지에 '재귀'함수의 단점에 대해 다음과 같이 설명하고 있습니다.

재귀 알고리즘은 이렇게 내부 스택을 이용해서 함수가 호출된 지점을 정확하게 기억해야 하기 때문에 메모리의 사용이나 프로그램의 처리 속도 면에서 추가적인 부하가 걸린다. ... 그래서 프로그래밍의 '고수'들은 재귀 알고리즘 대신 본인이 직접 설계한 스택을 이용하거나 for 나 while 과 같은 루프를 돌리는 방법을 선호하는 경우가 많다.


사실 제 개인적으로는 재귀 함수가 처리 속도면에서 물론 부족하긴 하지만 재귀 함수를 for/while로 바꾸는 최대 이유는 StackOverflow라고 생각됩니다. 참고로, 그 책의 이후 내용에서 재귀로 인한 StackOverflow 발생을 예시로 보여주고 있지만 '바꾸는 이유의 중요성'에 있어 앞의 것보다 더 중요하게 이야기 하고 있지는 않습니다.





donaricano-btn



[최초 등록일: ]
[최종 수정일: 9/30/2015]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 쓴 사람
 



2019-12-16 01시07분
[캬] 캬 그렇군요
[손님]

1  2  [3]  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
479정성태5/10/201413538IITC 도구 - Ingress의 Link/Field를 확인하는 방법 [4]
478정성태4/1/20149965일본 출장 시 남긴 오사카의 Ingress 필드
477정성태1/25/201411399세바시 335회 그래, 여기까지 잘 왔다 @김창옥 서울여대 기독교학과 겸임교수
476정성태1/21/201412538세상에 단 하나 뿐인 C# 머그컵 [2]
475정성태1/19/201411297차에 블랙박스 꼭 달으세요. ^^ [2]
474정성태1/15/201417438Internet Explorer 11 - GDI 리소스 누수로 화면 깨짐 현상 [1]
473정성태1/14/20149875Google+ Hangouts 대신 예전의 구글톡(Google Talk)을 사용하고 싶다면? [1]
472정성태1/11/201418696Wacom BAMBOO 태블릿 - 우 클릭이 안되거나 좌표가 어긋나는 문제 [5]
471정성태1/9/201412458우와~~~ 2014년 새로운 PC를 장만했습니다. ^^ [2]
470정성태1/9/201414079Wacom BAMBOO 태블릿 - 클릭이 더블 클릭으로 처리되는 문제
469정성태1/2/201412394ATI - DVI에서 HDMI 케이블로 바꿨는데 화면 축소 현상
467정성태1/1/201413975개발자 여러분들에게 추천하는 상품 - 책상용 팔걸이 레스트보드(RESTBOARD) [4]
466정성태11/27/201315576제니퍼소프트는... [3]
464정성태11/5/201310816사파리 웹 브라우저의 메모리 leak 현상 [4]
463정성태10/31/201310042Adobe Reader로 PDF 파일 저장할 때 CPU 100%치는 현상
462정성태10/30/201312634우와~~~ 성태가 책을 썼습니다. ^^ [9]
461정성태9/19/20138862TED 강연 - Marla Spivak: Why bees are disappearing
460정성태8/14/201315066PC의 시간이 맞지 않는 경우, CMOS 배터리 교체 [2]
459정성태8/11/201310568TED 강연 - 에이미 커디(Amy Cuddy): 당신의 신체 언어가 자신의 모습을 결정한다.
458정성태5/11/201310470생각의 전환: 1. 개인 인공위성을 만든 미디어 아티스트 송호준 [3]
457정성태4/1/201312944삼성 노트북 - 고성능 전원 옵션에서 액정 화면이 어두운 경우
456정성태3/11/201312135재미있는 수학 문제 하나: x = y 일때 2 = 1 ? [3]파일 다운로드1
455정성태3/7/201313738윈도우 서버 2012에서 플래시가 동작하지 않는 경우
454정성태1/23/20139809네이버의 애드포스트 수익이 해피빈으로도 전환된다는 사실! 아시나요? [2]
453정성태1/23/201319782윈도우 8/2012 업데이트 후 Windows.old 폴더 삭제하는 배치 명령어 [5]
452정성태1/21/201320676시스템 트레이에 블루투스 아이콘 나오게 하는 방법 [1]
1  2  [3]  4  5  6  7  8  9  10  11  12  13  14  15  ...