Microsoft MVP성태의 닷넷 이야기
도서 - 누워서 읽는 알고리즘 [링크 복사], [링크+제목 복사]
조회: 12181
글쓴 사람
정성태 (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)
529정성태7/18/2021120C:\$Windows.~BT 용도와 삭제하는 방법
528정성태7/17/202167Logitech Webcam이 있는 경우, %LOCALAPPDATA%\temp\LWSDebugOut.txt 파일의 (무제한) 증가 현상
527정성태7/13/202172Microsoft Edge의 뉴스 알림 창 끄는 방법
526정성태7/11/202197AMD CPU를 장착한 컴퓨터에서 Windows 11을 위한 fTPM 활성화 방법
525정성태6/30/2021111저작권 표시 없는 상업적 사용 가능한 무료 아이콘 구하기
524정성태6/25/2021573Windows 11 설치를 가로막는 TPM 칩, 운이 좋다면 구매할 수 있습니다. [2]
523정성태5/3/2021572절전 모드로 내려가는 우분투 머신 [7]
522정성태9/16/202034112020년 작업 PC ^^ [7]
521정성태11/25/20194443[종료] "시작하세요. C# 8.0 프로그래밍" 책을 1만원에 판매합니다. (4권 한정) [2]
520정성태8/26/20191868Snagit 2019(Build 3847) 사용 시 Effect 변경 후 창을 닫는 시점에 응용 프로그램이 종료하는 현상
519정성태7/15/20193276youtube-dl.exe를 윈도우 샌드 박스에서 실행
518정성태7/1/20193983크로미움 기반의 Microsoft Edge 웹 브라우저... 쓸만하네요. ^^ [4]
517정성태5/16/20193534윈도 운영체제는 태생적으로 갖고 있는 문제들로 인해 아직도 매우 취약한 운영체제로 분류됩니다?!! [2]
516정성태5/16/20192779배터리 사용 중인 태블릿에는 크롬보다는 Edge 브라우저가 더 낫습니다.
515정성태11/19/20185922LED 전등 교체와 잔광 현상 제거 콘덴서 - 두 번째 이야기
514정성태10/30/20187325LED 매입등 교체와 잔광 현상 제거 콘덴서
513정성태9/13/20184540블로거 분들 랜섬웨어 메일 "저작권관련 이미지 무단사용 안내메일(장명옥 본인제작)" 조심하세요. [2]
512정성태8/10/20184163번개는 땅에서부터 하늘로 올라가는 현상?
511정성태7/21/20184302[종료] DDR 3 4GB * 4EA, AMD 페넘II-X4 905e, 메인 보드 GA-770TA-UD3를 드립니다. [3]
509정성태6/12/20186148목/허리가 아픈 개발자들을 위한 근육 마사지 치료법 - KSNS [1]
508정성태5/22/20189270로이 베나비데스
507정성태4/13/20184978sysnet 블로그 관련 수치 [1]
506정성태1/20/20189356삼성 A/S 경험 - 오디세이(Odyssey) 노트북이 게임 도중 갑자기 전원이 나가는 경우 [2]
505정성태1/9/20179957모니터 간단 소개 - LG IPS LED 24MA53, 델 UltraSharp 24 - U2414H, 알파스캔 AOC 2477 IPS
504정성태9/25/201614399모니터 3대를 NVidia Surround로 연결하기 - 두 번째 [3]
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...