본문 바로가기

추천 검색어

실시간 인기 검색어

코딩 인터뷰를 위한 알고리즘 치트시트

리트코드LeetCode 문제를 풀면서 배우는 코딩 테스트
푸둥라이 지음 | 이춘혁 옮김
제이펍

2022년 12월 09일 출간

종이책 : 2022년 10월 06일 출간

(개의 리뷰)
( 0% 의 구매자)
eBook 상품 정보
파일 정보 pdf (12.16MB)
ISBN 9791192469607
듣기(TTS) 가능
TTS 란?
텍스트를 음성으로 읽어주는 기술입니다.
  • 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를​ 읽을 수 있습니다.
  • 전자책 화면에 표기된 주석 등을 모두 읽어 줍니다.
  • 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.
  • '교보 ebook' 앱을 최신 버전으로 설치해야 이용 가능합니다. (Android v3.0.26, iOS v3.0.09,PC v1.2 버전 이상)
소득공제
소장
정가 : 20,300원

쿠폰적용가 18,270

10% 할인 | 5%P 적립

이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.

카드&결제 혜택

  • 5만원 이상 구매 시 추가 2,000P
  • 3만원 이상 구매 시, 등급별 2~4% 추가 최대 416P
  • 리뷰 작성 시, e교환권 추가 최대 300원

작품소개

이 상품이 속한 분야

시험과 면접을 앞둔 개발자 준비생들을 위해 자주 출제되는 리트코드 문제 75개를 선정해 풀이 과정을 설명한다. 책을 읽으면서 리트코드 플랫폼에서 직접 문제 풀이를 진행할 수 있고, 손으로 풀면서 하나하나 장을 완료하면 같은 유형의 문제들을 풀 자신감을 얻을 수 있다. 동적 계획법, 이진 트리, LRU, LFU, 역추적, 너비 우선 탐색 등 자주 나오는 알고리즘 문제를 익혀 코딩 테스트에 대비하자.
옮긴이 머리말 x
베타리더 후기 xii
머리말 xiv
이 책에 대하여 xv
이 책을 읽는 법 xviii

CHAPTER 0 언어 기초 1
0.1 C++ 1
0.2 자바 8
0.3 파이썬 3 14

CHAPTER 1 핵심 알고리즘 17
1.1 알고리즘 학습과 문제 해결 아이디어 17
1.2 동적 계획법 문제 해결 방법 27
1.3 역추적 알고리즘 문제 해결 방법 39
1.4 BFS 알고리즘 문제 해결 방법 50
1.5 투 포인터 기법 프레임 60

CHAPTER 2 동적 계획법 95
2.1 동적 계획법: 최장 증가 부분 수열 95
2.2 2차원 증가 부분 수열: 봉투 중첩 문제 103
2.3 최대 부분 배열 문제 106
2.4 동적 계획법 Q&A: 최적 하위 구조와 dp 순회 방향 110
2.5 기본 동적 계획법: 최장 공통 부분 순열 116
2.6 기본 동적 계획법: 편집 거리 121
2.7 부분 수열 문제 해결 템플릿: 최장 회문 부분 수열 135
2.8 상태 압축: 동적 계획법 차원 축소 140
2.9 최소 삽입 횟수로 회문 문자열 구성 147
2.10 동적 계획법의 정규 표현식 155
2.11 다른 정의에 따른 다른 해법 163
2.12 기본 동적 계획법: 고층에서 계란 던지기 169
2.13 기본 동적 계획법: 고층에서 계란 던지기(심화) 174
2.14 기본 동적 계획법: 풍선 터트리기 문제 182
2.15 기본 동적 계획법: 0-1 배낭 문제 190
2.16 기본 동적 계획법: 하부 집합 배낭 문제 194
2.17 기본 동적 계획법: 완전한 배낭 문제 198
2.18 문제는 변해도 방법은 변하지 않는다 202
2.19 동적 계획법과 역추적 알고리즘의 관계 209

CHAPTER 3 데이터 구조 219
3.1 LRU 캐시 제거 알고리즘 219
3.2 계층별로 분해하여 LFU 알고리즘 작성하기 231
3.2.4 LFU 핵심 로직 237
3.3 이진 탐색 트리 작업 모음 239
3.4 완전 이진 트리의 노드 계산이 어려운 이유 247
3.5 다양한 순회 프레임을 사용한 이진 트리 직렬화와 역직렬화 251
3.6 Git 원리, 이진 트리의 최소 공통 조상 263
3.7 특수 데이터 구조: 단조 스택 269
3.8 특수 데이터 구조: 단조 큐 274
3.8.3 알고리즘 복잡도 분석 280
3.9 회문 연결 리스트 판단 280
3.10 순수 재귀의 반전 연결 리스트 조작 286
3.11 k개의 반전 연결 리스트 292

CHAPTER 4 알고리즘 사고 299
4.1 하부 집합, 조합, 순열 문제 해결을 위한 역추적 알고리즘 299
4.2 역추적 알고리즘 실전: 스도쿠 문제 풀기 307
4.3 역추적 알고리즘 실전: 괄호 생성 312
4.4 BFS 알고리즘 무차별 탐색으로 퍼즐 문제 풀기 316
4.5 2Sum 문제의 핵심 아이디어 321
4.6 nSum 문제를 해결하는 함수 325
4.7 복잡한 문제 분해하기: 계산기 구현 333
4.8 호떡을 정리하는 재귀 아이디어 342
4.9 구간 합 기법을 사용한 부분 배열 문제 해결 346
4.10 중첩 리스트 평탄화 350

CHAPTER 5 면접에 자주 나오는 문제 357
5.1 효율적으로 소수를 찾는 방법 357
5.2 효율적인 모듈로 지수 연산 361
5.3 이진 탐색 알고리즘 사용하기 366
5.4 빗물 받는 문제의 효율적인 해결 방법 370
5.5 정렬된 배열의 중복 요소 제거 377
5.6 최장 회문 부분 문자열 찾기 379
5.7 탐욕 알고리즘을 활용한 점프 게임 382
5.8 탐욕 알고리즘을 사용한 시간 관리 388
5.9 괄호의 유효성 판단 394
5.10 수험생의 좌석 배치 396
5.11 Union-Find 알고리즘 상세 403
5.12 Union-Find 알고리즘 응용 414
5.13 한 줄의 코드로 풀 수 있는 알고리즘 문제 420

APPENDIX A 한국어판 부록: LeetCode 가이드 427

문제 목록 433
찾아보기 436

우리는 문제의 유형을 파악하고 아이디어와 해법을 도출해내는 방식을 배울 것이다. 틀에서 벗어나 문제의 공통점과 본질을 파악하면 한 문제를 통해 비슷한 유형의 문제들을 풀 수 있다. / 우리는 일반적인 데이터 구조를 다루는 것이지 알고리즘 대회를 준비하는 것이 아니다. 따라서 일반적인 문제만 풀면 된다. 설명과 함께 나의 개인적인 문제 풀이 경험도 공유한다. 따라서 독자는 나의 시점에서 이해해보는 것도 도움이 될 것이며 다른 세부 사항에는 신경 쓰지 않아도 된다. 이번 절에서 데이터 구조와 알고리즘에 대한 이해의 틀을 확립할 수 있기를 바란다. (17쪽)

무차별 탐색은 효율이 매우 낮아 불필요한 계산을 피하기 위해서는 메모 또는 DP 테이블을 사용한 최적화 과정이 필요하다. / 이런 과정을 통해 동적 계획법 문제는 최적의 하위 구조를 가질 수 있으며, 하위 문제의 최댓값을 통해 상위 문제의 최댓값을 얻을 수 있다. / 동적 계획법의 핵심 아이디어는 무차별 탐색을 통해 최댓값을 찾는 것이지만, 문제는 다양한 방식으로 변형될 수 있다. 무차별 탐색은 쉽지 않으며, 정확한 상태 전이 방정식을 통해서만 정확한 탐색이 가능하다. (27~28쪽)

이진 탐색은 간단하지 않다. KMP(Knuth-Morris-Pratt algorithm)를 개발한 도널드 커누스(Donald Knuth)는 이진 탐색을 다음과 같이 평가한다. / “이진 탐색의 기본 아이디어는 직관적일지라도 상세 내용은 매우 까다로울 수 있다.” / 기본 아이디어는 매우 간단하지만 세부 사항은 아주 복잡할 수 있다는 의미이다. 많은 사람이 정수의 오버플로 버그에 대해 이야기하는 것을 좋아한다. 하지만 이진 탐색의 문제는 이와 같은 세부 사항이 아니라 mid를 추가 또는 제거할지, while 내부에 〈=를 사용할지 또는 〈를 사용할지에 있다. (67쪽)

이번 장에서는 주로 연결 리스트, 이진 트리와 같은 기본 데이터 구조의 사용을 다룬다. 복잡한 문제를 계층별로 나누거나 LRU, LFU 등 기본 알고리즘을 직접 작성해본다. 또한 단조 스택과 단조 큐와 같이 특수한 데이터 구조의 구현 방법과 시나리오의 사용을 소개한다. / 알고리즘이 영혼이라면 데이터 구조는 피와 살이라고 볼 수 있다. 데이터 구조의 신비를 함께 알아보자. / LRU 알고리즘은 캐시를 제거하는 것으로, 원리는 어렵지 않다. 그러나 면접에서 버그가 없는 알고리즘을 작성하려면 기법이 필요한데 데이터 구조를 계층별로 추상화하고 분해해야 한다. 이번 절에서 아름다운 코드를 작성해보자. (219쪽)

조합 문제는 역추적 아이디어를 사용하고 결과를 트리 구조로 추상화할 수 있다. 핵심은 start를 사용해 이미 선택한 숫자를 제외하고 모든 리프 노드를 결과로 사용하는 것이다. / 순열 문제는 역추적 아이디어를 사용하고 역추적 템플릿을 사용하기 위해 트리 구조로 추상화할 수 있다. 핵심은 contains 메서드를 사용해 이미 선택한 숫자를 제외하고 모든 리프 노드를 결과로 사용하는 것이다. / 하부 집합 문제는 수학적 귀납법을 사용할 수 있다. 더 작은 문제의 결과를 알고 있다고 가정하여 원래 문제의 결과를 도출할 방법을 찾는다. 역추적 알고리즘을 사용해 트리 구조로 추상화할 수 있으며 start 매개변수를 사용해 이미 선택한 숫자를 제거하고 전체 트리의 노드를 결과로 기록한다. / 이러한 몇 가지 트리를 기억해두면 대부분의 역추적 알고리즘 문제에 대응할 수 있으며, start 또는 contains의 가지치기이므로 특별한 기법은 아니다. (307쪽)

리트코드LeetCode로 실습하며 코딩 인터뷰를 대비하는 알고리즘 문제 풀이 참고서

시험과 면접이 목적이라면 두꺼운 알고리즘 서적보다는 문제를 직접 풀어보는 것이 훨씬 도움이 됩니다. 문제를 푸는 방식에는 노하우가 있기 마련이고, 깃허브에서 스타를 10만 개 받은 저자 푸둥라이의 노하우를 이 책에서 배울 수 있습니다. 몇천 개의 문제를 다 풀어볼 수는 없으니 문제를 유형별로 나누고 공통되는 프레임을 익힙니다. 이와 같은 방식으로 해법을 익히면 하나의 해법으로도 수천 가지 문제에 대응할 수 있습니다.

1장에서는 동적 계획법, 역추적, 너비 우선 탐색, 투 포인터, 슬라이딩 윈도 등을 포함해 자주 사용하는 알고리즘의 핵심과 문제 해결의 프레임을 확인합니다. 2장에서는 동적 계획법에서 사용되는 사고의 프레임을 사용해 정규 표현식(regular expression), 배낭 문제 등 기본적인 동적 계획법 문제를 해결합니다. 상태 전이 방정식을 작성하고, 상태 압축을 진행하는 방법 등을 소개합니다.

3장은 데이터 구조와 관련하여 이진 트리, LRU, LFU 등 면접 시 자주 접하는 알고리즘과 그 원리를 설명합니다. 4장은 역추적 알고리즘, 너비 우선 탐색 알고리즘 등의 핵심 비법과 프레임을 자세히 알아봅니다. 마지막으로 5장은 앞에서 배운 알고리즘들을 응용하여 면접에 자주 나오는 문제 18가지를 설명합니다. 다양한 알고리즘과 결합하여 문제를 설명하고 여러 가지 해법을 소개합니다.

리트코드(LeetCode)는 사용자도 많을뿐더러 문제도 2,000개 이상 보유하고 있습니다. 이 책은 그중에서 테스트에 자주 출제되는 문제만을 엄선했습니다. 특히 본 한국어판은 리트코드를 처음 접하는 독자를 위해 리트코드 사이트 사용법을 부록으로 추가했습니다. 테스트에 자주 나오는 알고리즘 문제를 직접 풀어보며 쉽고 재미있게 익혀보아요.

작가정보

저자(글) 푸둥라이

付??
오픈 소스를 활용해 새로운 가치를 창조하고 있다. 다년간의 문제 풀이 경험으로 복잡한 알고리즘 문제를 쉽게 가르치기 위해 노력 중이다. IT 종사자들이 시행착오를 줄이고 알고리즘의 난관을 뛰어넘는 데 도움이 되기를 바라며 이 책을 집필했다.

프로그래밍 언어와 자연어 모두 관심이 많은 개발자다. 일본에서 웹과 ADAS 개발 업무를 경험하고 현재는 한국에서 웹 개발자로 일하고 있다. 현지 경험을 통해 영어/중국어/일본어/스페인어 구사가 가능하며, 개발에 있어서는 한 우물을 깊이 그리고 효율적으로 파기 위해 노력 중이다.

이 상품의 총서

Klover리뷰 (0)

Klover리뷰 안내
Klover(Kyobo-lover)는 교보를 애용해 주시는 고객님들이 남겨주신 평점과 감상을 바탕으로, 다양한 정보를 전달하는 교보문고의 리뷰 서비스입니다.
1. 리워드 안내
구매 후 90일 이내에 평점 작성 시 e교환권 100원을 적립해 드립니다.
  • - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
  • - 리워드는 1,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다.
  • - 리워드는 한 상품에 최초 1회만 제공됩니다.
  • - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
2. 운영 원칙 안내
Klover리뷰를 통한 리뷰를 작성해 주셔서 감사합니다. 자유로운 의사 표현의 공간인 만큼 타인에 대한 배려를 부탁합니다. 일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
  • 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
  • 도서와 무관한 내용의 리뷰
  • 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
  • 의성어나 의태어 등 내용의 의미가 없는 리뷰

구매 후 리뷰 작성 시, e교환권 100원 적립

문장수집

문장수집 안내
문장수집은 고객님들이 직접 선정한 책의 좋은 문장을 보여 주는 교보문고의 새로운 서비스 입니다. 교보eBook 앱에서 도서 열람 후 문장 하이라이트 하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다. 마음을 두드린 문장들을 기록하고 좋은 글귀들은 ‘좋아요’ 하여 모아보세요. 도서 문장과 무관한 내용 등록 시 별도 통보없이 삭제될 수 있습니다.
리워드 안내
  • 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
  • e교환권은 적립일로부터 180일 동안 사용 가능합니다.
  • 리워드는 1,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다.
  • 리워드는 한 상품에 최초 1회만 제공됩니다.
  • sam 이용권 구매 상품/오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.

구매 후 문장수집 작성 시, e교환권 100원 적립

    교보eBook 첫 방문을 환영 합니다!

    신규가입 혜택 지급이 완료 되었습니다.

    바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
    지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!

    교보e캐시 1,000원
    TOP
    신간 알림 안내
    코딩 인터뷰를 위한 알고리즘 치트시트 웹툰 신간 알림이 신청되었습니다.
    신간 알림 안내
    코딩 인터뷰를 위한 알고리즘 치트시트 웹툰 신간 알림이 취소되었습니다.
    리뷰작성
    • 구매 후 90일 이내 작성 시, e교환권 100원 (최초1회)
    • 리워드 제외 상품 : 마이 > 라이브러리 > Klover리뷰 > 리워드 안내 참고
    감성 태그

    가장 와 닿는 하나의 키워드를 선택해주세요.

    사진 첨부(선택) 0 / 5

    총 5MB 이하로 jpg,jpeg,png 파일만 업로드 가능합니다.

    신고/차단

    신고 사유를 선택해주세요.
    신고 내용은 이용약관 및 정책에 의해 처리됩니다.

    허위 신고일 경우, 신고자의 서비스 활동이 제한될 수
    있으니 유의하시어 신중하게 신고해주세요.


    이 글을 작성한 작성자의 모든 글은 블라인드 처리 됩니다.

    문장수집 작성

    구매 후 90일 이내 작성 시, e교환권 100원 적립

    eBook 문장수집은 웹에서 직접 타이핑 가능하나, 모바일 앱에서 도서를 열람하여 문장을 드래그하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다.

    P.
    코딩 인터뷰를 위한 알고리즘 치트시트
    리트코드LeetCode 문제를 풀면서 배우는 코딩 테스트
    저자 모두보기
    저자(글)
    낭독자 모두보기
    sam 이용권 선택
    님이 보유하신 이용권입니다.
    차감하실 sam이용권을 선택하세요.
    sam 이용권 선택
    님이 보유하신 이용권입니다.
    차감하실 sam이용권을 선택하세요.
    sam 이용권 선택
    님이 보유하신 프리미엄 이용권입니다.
    선물하실 sam이용권을 선택하세요.
    결제완료
    e캐시 원 결제 계속 하시겠습니까?
    교보 e캐시 간편 결제
    sam 열람권 선물하기
    • 보유 권수 / 선물할 권수
      0권 / 1
    • 받는사람 이름
      받는사람 휴대전화
    • 구매한 이용권의 대한 잔여권수를 선물할 수 있습니다.
    • 열람권은 1인당 1권씩 선물 가능합니다.
    • 선물한 열람권이 ‘미등록’ 상태일 경우에만 ‘열람권 선물내역’화면에서 선물취소 가능합니다.
    • 선물한 열람권의 등록유효기간은 14일 입니다.
      (상대방이 기한내에 등록하지 않을 경우 소멸됩니다.)
    • 무제한 이용권일 경우 열람권 선물이 불가합니다.
    이 상품의 총서 전체보기
    네이버 책을 통해서 교보eBook 첫 구매 시
    교보e캐시 지급해 드립니다.
    교보e캐시 1,000원
    • 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
    • 한 ID당 최초 1회 지급 / sam 이용권 제외
    • 네이버 책을 통해 교보eBook 구매 이력이 없는 회원 대상
    • 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)
    구글북액션을 통해서 교보eBook
    첫 구매 시 교보e캐시 지급해 드립니다.
    교보e캐시 1,000원
    • 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
    • 한 ID당 최초 1회 지급 / sam 이용권 제외
    • 구글북액션을 통해 교보eBook 구매 이력이 없는 회원 대상
    • 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)