본문 바로가기
+ 펴낸 책

자바 알고리즘 인터뷰 with 코틀린

by 책만 2023. 9. 12.

 자바 알고리즘 인터뷰 with 코틀린 

102가지 알고리즘 문제 풀이로 완성하는 코딩 테스트

박상길 지음 | 정진호 일러스트

904쪽 | 42,000원 | 2023년 9월 20일 출간 | 180*235*43 | ISBN 9791189909550 (93000)

판매처 | [교보문고] [YES24] [알라딘] [영풍문고] [인터파크] + 전국 교보문고 매장
전자책 판매처 | [교보문고] [YES24] [알라딘] [리디북스] | 10월 20일 출간 | ISBN 9791189909055 | PDF 포맷

 

★ 정오표: https://www.onlybook.co.kr/entry/java-algorithm-interview-errata (아직 등록된 정오사항이 없습니다)

 

코딩 테스트와 알고리즘 인터뷰를 준비하는 개발자들을 위한 최고의 책 『파이썬 알고리즘 인터뷰』가 자바와 코틀린 코드로 무장하고 한층 업그레이드되어 돌아왔다!

이 책 한 권이면 취업이나 이직 준비는 물론, 현업에서도 바로 활용 가능한 실무 코드를 학습할 수 있는 기본기를 다질 수 있다. 200여 가지가 넘는 풍부한 일러스트를 통해 알고리즘과 자료구조의 기초도 다시 한번 탄탄히 다져보자.

✔ 취업 준비생과 이직자를 위한 알고리즘과 자료구조 완벽 학습 가이드!
✔ 102가지 리트코드/프로그래머스 기출 문제의 상세한 분석과 풀이 해설!

 

012345

이 책의 주요 특징

  • 자바에 익숙하지 않은 독자를 위해 자바의 실행 방식과 동작 원리, 고급 문법을 함께 설명한다.
  • 코틀린에 익숙하지 않은 독자를 위해 자바와 코틀린의 차이점, 코틀린만의 장점과 여러 가지 팁을 함께 소개한다.
  • 알고리즘을 이해하기 어려워하는 독자를 위해 알고리즘에 대한 다양한 시각화 일러스트를 곁들였다.
  • 문제 풀이에 익숙하지 않은 독자를 위해 다양한 형태의 문제를 여러 가지 방법으로 풀이해 본다.
  • 최적화에 대한 이해도가 낮은 독자를 위해 여러 가지 최적화 기법을 소개하고 성능을 측정, 비교해본다.

이 책의 구성

[1부] 코딩 인터뷰를 준비하며
1장 ‘코딩 인터뷰 & 코딩 테스트’에서는 각각에 대한 소개와 어떻게 하면 시험을 잘 치를 수 있을지, 문제 풀이 외에도 타임아웃이나 예외 처리는 어떻게 처리해야 하는지, 문제를 잘 풀이하고 점수를 높이기 위한 여러 가지 팁과 함께 리트코드와 프로그래머스에서 문제를 풀이하는 방법을 담았다.

[2부] 자바 & 코틀린
2장 ‘자바’에서는 코딩 테스트 풀이를 위한 언어로 자바를 택하고 세상에서 가장 유명한 언어인 자바의 상세한 특징과 동작 원리를 살펴본다. 3장 ‘코틀린’에서는 자바에 이어 다음번 대세가 될 것이 거의 확실해 보이는 코틀린의 특징과 동작 원리를 살펴본다. 4장 ‘자료형’에서는 자바에서 제공하는 자바 컬렉션 프레임워크를 비롯한 다양한 자료형을 살펴보며 코틀린에서도 어떻게 자바의 자료형을 그대로 사용할 수 있는지 원리와 구현 방식을 상세히 살펴본다. 5장 ‘빅오’에서는 빅오에 대한 정의와 특징을 살펴보고, 자바 컬렉션 프레임워크의 빅오에 대해서도 자세히 살펴본다. 6장 ‘문자열 처리’에서는 문자열과 관련한 주제를 살펴본다. 이 장부터 본격적으로 다양한 문제 풀이를 진행해본다.

[3부] 선형 자료구조
7장 ‘배열’부터 8장 ‘연결 리스트’, 9장 ‘스택, 큐’, 10장 ‘데크, 우선순위 큐’, 11장 ‘해시 테이블’까지는 선형 자료구조와 관련한 다양한 주제를 살펴보고, 코딩 테스트 문제를 풀이해 본다.

[4부] ‘비선형 자료구조’
12장 ‘그래프’부터 13장 ‘최단 경로 문제’, 14장 ‘트리’, 15장 ‘힙’, 16장 ‘트라이’까지는 비선형 자료구조와 관련한 주제를 살펴보고, 코딩 테스트 문제를 풀이해 본다.

[5부] ‘알고리즘’
17장 ‘정렬’에서는 알고리즘의 꽃이라 불리우는 정렬의 다양한 알고리즘을 순서대로 하나씩 살펴본다. 18장 ‘이진 검색’, 19장 ‘비트 조작’, 20장 ‘슬라이딩 윈도우’에서는 관련한 알고리즘을 각각 살펴본다. 특히, 21장 ‘그리디 알고리즘’, 22장 ‘분할 정복’, 23장 ‘다이나믹 프로그래밍’은 각각 독립된 장이면서도 서로 연관되어 있는 주제이므로, 23장에서 내용을 최종 정리해 각각의 특징과 차이점을 상세히 살펴본다.

[부록] ‘2022년 카카오 공채 만점 가이드’에서는 지금까지 살펴본 모든 알고리즘 역량을 총동원하여 실제로 2022년 카카오 개발자 신입 공채에 출제되었던 문제들을 최선의 방법으로 모두 풀이해 본다.

 


이 책의 독자 대상

이 책은 ‘국내 최고 수준 IT 기업에 취업을 희망하는 신입 개발자’ 눈높이에 맞춰 집필했다.
📌 어떻게 하면 자바를 잘 다룰 수 있을까?
📌 어떻게 하면 코틀린을 잘 익힐 수 있을까?
📌 어떻게 하면 코딩 테스트를 잘 치를 수 있을까?
📌 어떻게 하면 알고리즘 문제를 잘 풀이할 수 있을까?
📌 어떻게 하면 면접을 잘 볼 수 있을까?

이 책을 읽는 독자는 하나 이상의 언어로 프로그래밍해본 경험이 있어야 하며, 기본적인 자료구조와 알고리즘에 대해 공부할 준비가 되어 있어야 한다. 자바를 잘 몰라도 이 책을 볼 수는 있지만, 가능하면 자바에 대한 기본 지식을 갖춘 상태에서 책을 읽는 편이 내용을 이해하는 데 훨씬 더 도움이 될 것이다.

 

| 이 책의 개발 언어와 도구 |
- 자바 11(필수)
- 코틀린 1.3(필수)
- 인텔리제이 커뮤니티 에디션(권장)
- 리트코드(필수)
- 프로그래머스(필수)

 

| 깃허브 소스코드 다운로드 |
이 책에서 소개하는 모든 문제 풀이에 사용된 코드는 깃허브를 통해 제공되며, 다음의 깃허브 주소에서 모든 문제의 풀이 코드를 다운로드할 수 있다.
  https://github.com/onlybooks/java-algorithm-interview

 

지은이 박상길

현대자동차의 인공지능 연구조직에서 기술 리더를 담당했으며, 이전에는 카카오에서 챗봇을, 다음커뮤니케이션에서 검색엔진을 만들며 검색에서 빅데이터, 인공지능으로 이어지는 인공지능 기술을 두루 경험했다. 지금은 현대자동차그룹의 글로벌 소프트웨어 센터인 포티투닷에서 초거대 언어 모델을 연구하고 있다. 카카오 개발자 공채 담당 위원이었으며, 현대 자동차에서도 소프트웨어 전문가 채용을 담당하는 TFT에서 활동했다. 『파이썬 알고리즘 인터뷰』(책만, 2020), 『비전공자도 이해할 수 있는 AI 지식』(반니, 2022)을 집필했다.


일러스트 정진호

개발자 출신 화가, 작가, 일러스트레이터, 비주얼씽킹 전문가. 글로벌 인터넷 기업에서 엔지니어로 일했고, 독학으로 10년간 그림을 그렸다. 기업, 학교, 공공기관 등에서 다양한 시각화 관련 강의와 프로젝트를 수행했고 수채화, 디지털 페인팅, 3D 모델링 등 아날로그와 디지털을 넘나들며 창작 활동을 즐긴다. 8번의 수채화 개인전을 열었고 20권이 넘는 저서와 역서를 출간했다. 국내 최고령 일러스트레이터가 되는 소박한 꿈을 품고 매일 작업하고 있다.

 

지은이의 말

2020년에 출간된 『파이썬 알고리즘 인터뷰』는 코딩 테스트와 알고리즘 인터뷰를 준비하는 분을 위한 대표적인 서적으로 자리매김하며 많은 사랑을 받았다. 카카오에 재직할 당시 국내 최초로 개발자 블라인드 채용을 진행하면서 코딩 테스트 출제 위원으로 참여한 것이 계기가 되어 좋은 책으로 이어졌다. 카카오에서 코딩 테스트를 진행했던 경험, 이후에 좋은 인재를 채용하기 위해 수많은 면접자들을 대상으로 기술 인터뷰를 수행한 경험, 현대자동차로 이직한 후에도 현대자동차그룹에 더 좋은 소프트웨어 인재를 채용하기 위해 수백여 차례의 면접을 진행한 경험, 그리고 더 좋은 면접을 진행하기 위해 다른 회사의 기술 인터뷰까지 면밀히 살펴본 경험을 당시 첫 책에 모두 담아냈다. 무엇보다 최고의 알고리즘 책을 만들어보겠다는 노력이 작은 결실을 맺어 더할 나위 없이 기쁘다. 

이번에 3년 만에 새롭게 출간되는 『자바 알고리즘 인터뷰 with 코틀린』은 첫 책을 출간할 때의 마음가짐을 그대로 계승하여 다시 한번 최고의 알고리즘 책을 만들기 위해 노력한 책이다. 심혈을 기울여 선정한 리트코드 문제 88개, 프로그래머스 문제 7개, 카카오 기출 문제 7개를 풀이했다. 지난번보다도 훨씬 더 효율적이고 깨끗한 코드를 제시하려고 노력했고, 실무에 그대로 적용해도 문제가 없는 수준으로 작성했다. 간혹 문제 해결에 급급한 나머지 실무에서 활용하기 어려운 코드를 제시하는 자료나 책도 눈에 띄지만, 적어도 이 책은 그렇지 않다. 코딩 테스트를 통과해 취업에 성공한 이후 실무에서도 계속해서 활용할 수 있는 풀이 코드를 제공하는 데 주력했다. 

이 책에서 제시하는 모든 코드는 실무에 바로 적용해도 문제가 없을 정도로 수준을 높였다. 여러분이 이 책을 통해 익힌 코딩 역량은 실무에도 그대로 도움이 될 것이다. 그뿐만 아니라 전작과 마찬가지로 어려운 알고리즘을 친절한 일러스트로 풀어서 설명했다. 어렵기만 한 알고리즘을 다양한 역사와 함께 부가 설명을 곁들여 200여 장이 넘는 일러스트를 통해 직관적으로 설명하는 데 많은 노력을 기울였다. 이처럼 『자바 알고리즘 인터뷰 with 코틀린』은 『파이썬 알고리즘 인터뷰』와 비슷하면서도 한층 더 업그레이드된 책이다. 게다가 이번 책에서 가장 두드러지는 차이점은 풀이 언어로 ‘자바’를 택했다는 점이다. 자바는 코딩 테스트를 치를 때 가장 많은 사람들이 택하는 언어다. 이번 책으로 인해 좀 더 많은 독자분에게 도움을 줄 수 있길 바랐다. 이 외에도 지난 책에서 부족하다고 생각하는 부분을 대폭 보완했다.

이 책은 현업에 종사하는 개발자뿐만 아니라 아직 학교에 재학 중인 대학생에게도 유용하다. 특히 이제 막 졸업하고 취업을 희망하는 취업 준비생, 연구실을 나서는 석박사들에게 많은 도움이 될 것이다. 그뿐만 아니라 좋은 문제를 찾기 위한 면접관들에게도 이 책은 좋은 선택이 될 것이다. 나 또한 면접관으로서 더 좋은 문제를 출제하기 위해 수많은 코딩 테스트와 경진 대회에 참여했고 수많은 알고리즘 서적을 뒤적여야 했다. 이 책에는 그간 내가 겪은 경험과 어려움까지 고스란히 모두 반영했다.

이 책의 모든 문제에는 풀이와 해설이 바로 제시된다. 하지만 되도록 책의 풀이를 보지 않고 먼저 직접 풀어보기를 권장한다. 이 책에서 제시한 풀이는 가능한 한 최적의 풀이가 되도록, 또한 우아한 코드가 되도록 노력했기 때문에 여러분이 먼저 문제를 풀어본 다음, 여러분의 풀이와 이 책의 풀이를 비교해보면서 어떤 부분에 차이가 있는지를 한번 살펴보자. 여러분의 코드 품질과 풀이 방법을 개선하고 최적화 기법을 익히는 데에 큰 보탬이 될 것이다.

 

추천의 글

흔히들 개발자에게 알고리즘은 실무 개발과는 동떨어진 주제라고 여겨진다. 특별한 목적을 위해 알고리즘을 직접 만들거나 전문적으로 활용하는 소수의 개발자를 제외하고, 애플리케이션이라 불리는 다수의 사용자가 있는 IT 시스템을 개발하는 경우 알고리즘이란 말은 현장에서 거의 사용되지 않는 것처럼 보인다. 정렬이나 검색 같은 알고리즘이 필요하다면 잘 만들어진 라이브러리를 사용하거나 검색엔진처럼 그 기능에 최적화된 서비스를 사용하면 된다. 그래서 알고리즘은 취업이나 이직에서 요구되는 코딩 테스트나 인터뷰를 통과하기 위해 잠시 공부해야 하는 일회성 도구처럼 취급된다.

하지만 과연 그럴까? 자바의 가장 인기 있는 프레임워크인 스프링의 레퍼런스 문서와 소스 코드를 살펴보면 알고리즘이라는 단어가 상당히 많이 등장한다. 대표적인 스프링 기술인 스프링 MVC의 핵심인 DispatcherServlet 클래스는 웹 요청을 처리하기 위한 공통의 알고리즘을 제공하는 책임을 갖는다고 공식 문서에 소개돼 있다. 이 외에도, 의존성 주입DI에 관한 문서를 보면 스프링이 의존 오브젝트를 찾아서 생성자로 주입해줄 때 사용하는 알고리즘에 대한 설명이 나온다. 아울러 스프링 테스트에서 DataSource를 찾는 방법도 알고리즘으로 이야기한다. 이렇게 스프링의 기술을 잘 이해하기 위해서는 스프링의 각 기술에 적용된 알고리즘을 이해하는 것이 필수다. 결국 스프링을 사용하는 개발자라면 누구보다도 알고리즘과 매우 긴밀하게 일을 하고 있는 셈이다.

더욱이, 기술을 이해하고 사용하는 데만 알고리즘이 필요한 게 아니다. 애플리케이션의 로직을 담은 컴포넌트와 코드를 작성하는 것 또한 사실상 알고리즘을 만들고 구현하는 과정이다. 스프링의 빈bean 컴포넌트 사이의 의존 관계 주입은 디자인 패턴 중 전략 패턴으로 설명된다. 스프링의 핵심은 런타임에 사용할 의존 오브젝트를 자유롭게 변경함으로써 유연하지만 견고한 애플리케이션을 개발하는 것이다. 전략 패턴은 런타임에 알고리즘을 자유롭게 교체할 수 있게 해주는 디자인 패턴이다. 그러니까 스프링은 결국 비즈니스 로직을 담은 알고리즘을 유연하게 확장하고, 교체하고, 합성해서 애플리케이션을 만들게 해주는 도구인 셈이다. 따라서 스프링 개발자라면 날마다 알고리즘을 설계하고 이를 조합해서 시스템을 만든다고 봐도 무방하다.

물론 알고리즘 인터뷰에 자주 등장하는 유명 알고리즘과 현장에서 다양한 도메인의 문제를 풀기 위해 매일 설계하고 구현해야 하는 알고리즘은 흡사 다르게 보이기도 한다. 그래도 결국 코드로 구현 가능한, 문제를 해결하는 방법과 절차라는 점에서는 유사하다. 문제를 해결할 때 시간과 공간을 어떻게 활용하는지에 주의를 기울여야 한다는 점도 비슷하다. 많은 양의 데이터를 적합한 자료구조에 담아 애플리케이션으로 가져와서 최적화된 메모리를 사용하면서 빠른 시간 내에 결과를 만들어내도록 실전 알고리즘을 구상하고 코드로 구현해내는 것이 급격하게 성장하고 꾸준히 복잡해지는 오늘날 서비스 개발자에게 요구되는 중요한 실력임이 분명하다.

개발자라면 알고리즘의 기초를 익혀야 하며, 자신이 사용하는 도구의 근간이 되는 프로그래밍 언어의 특징을 잘 파악하고 활용할 수 있는 훈련이 필요한데, 이 책 『자바 알고리즘 인터뷰 with 코틀린』은 그 점에서 탁월하다. 2장부터 이어지는 자바, 코틀린, 자료형에 관한 설명은 언어라는 도구를 최적의 알고리즘을 만들려면 어디까지 들여다보고 실험해야 하는지 모범을 보여준다. 자바와 코틀린을 태생부터 관심을 갖고 사용해왔던 나조차 미처 생각해보지 않은 영역까지 탐험하고 이를 바탕으로 이후 알고리즘을 전개하는 내용에선 감탄을 금하지 않을 수 없었다.

알고리즘 대회나 인터뷰를 위한 서적이나 자료를 훑다 보면 요즘 개발자들이 관심을 많이 갖는 클린 코드 관점에서 아쉬움이 느껴지는 코드를 많이 만나게 된다. 제한된 시간에 답을 내기만 하면 코드는 어떻게 만들고 구성해도 상관없다는 오해를 주면 어쩌나 하는 걱정이 들기도 한다. 그런데 이 책의 알고리즘 풀이 예제를 보면 간단한 구조이지만 적절한 모듈 분리, 의미 있는 네이밍, 읽고 이해하기 좋게 코드를 만들려는 저자의 강한 의지가 느껴진다. 이 책에 ‘실무’라는 단어가 얼마나 자주 등장하는지를 살펴본다면 이 책이 단순히 코딩 테스트 준비만을 위한 책 이상임을 알게 될 것이다.

당장 코딩 테스트와 인터뷰에서 필요한 지식을 쌓고 훈련을 하기에 좋을 뿐만 아니라, 이후에 애플리케이션을 만들 때 문제를 해결하는 가장 좋은 방법을 찾으려는 수고의 가치와 결과가 무엇인지 잊지 않게 해줄 수 있는 이 책은 개발자의 좋은 길잡이이자 동반자가 되어줄 것이다.


- 이일민 / 이프릴 대표, 『토비의 스프링』 저자



베타리더 한마디

언뜻 보면 이 책은 저자의 유명한 전작인 『파이썬 알고리즘 인터뷰』를 단순히 자바 버전으로 출간한 듯 보이지만, 전혀 새로운 콘셉트의 책이라 할 수 있다. 이 책에 실린 실습 예제는 자바와 코틀린으로 제공되는데 이렇게 두 가지 언어로 함께 제공하는 것이 이 책의 가장 큰 장점이자, 또 다른 재미를 안겨준다. 아울러 이 책에서는 파이썬 코드 구현 의견도 제시해주기 때문에 알고리즘을 구현할 때 세 가지 언어를 비교하며 설명해주는 점이 더욱 흥미로웠다. 또한 전반적인 알고리즘 설명 외에도 특히, 왜 알고리즘을 사용해야 하는지, 실제 업무에서는 어떻게 활용해야 하는지 등 평소 고민했던 부분에 큰 도움을 받았다.
- 박찬웅 / 소프트웨어 개발자

기업은 개발자를 뽑을 때 일차적인 검증 수단으로 코딩 테스트를 봅니다. 이 책은 리트코드 문제를 선별해 출제자의 의도와 문제 해결 방법을 엿볼 수 있습니다. 알고리즘 개념 정리가 필요하거나 자바와 코틀린 언어로 코딩 테스트를 준비하는 분에게 이 책을 추천합니다.
- 오동주 / 안드로이드 개발자

이 책을 전작의 개정판으로 생각할 수도 있지만, 전혀 다른 언어인 자바를 사용하기에 다른 책이라고 봐도 좋다고 생각합니다. 파이썬을 공부하면서 전작을 읽었고 많은 도움을 받았습니다. 꼭 코딩 테스트를 위해서가 아니라 자바나 코틀린을 처음 접하는 책으로도 좋다고 생각합니다.
- 이상우 / 카카오, 톡메시징파트 개발자

신입 개발자를 위한 필수 자료구조 책을 소개합니다. (제가 아는 한) 코틀린을 통해 코딩 인터뷰/테스트를 다루는 첫 번째 책이기도 합니다. 필수적인 기본 자료구조뿐만 아니라 그리디 알고리즘이나 다이나믹 프로그래밍 같은 고급 주제까지 다루기에 폭넓은 주제를 공부할 수 있습니다.
- 정현준 / AtlasLabs, VP of Engineering

취미 삼아 해커랭크라는 사이트에서 C++와 파이썬으로 종종 문제를 풀었지만, 항상 풀이해 설에 대한 갈망을 느끼며 좀 더 나은 알고리즘은 없는지 늘 궁금했다. 이 책에서는 평소에 등산로를 결정하는 일처럼 우리 앞에 놓여 있는 여러 가지 선택지 중 왜 이런 선택(문제 풀이 방법)을 하게 되었는지에 대한 식견은 물론, 자바와 코틀린 소스 코드를 동시에 보여준다. 이 책을 베타리딩하며 그간 내가 느껴왔던 갈증을 풀어줄 책임을 확신했다. 아니 나뿐만이 아니라 이 책을 읽는 많은 이들이 이 말에 동감하지 않을까?
- 채민석 / integrate.io, APAC 담당 세일즈엔지니어

『파이썬 알고리즘 인터뷰』를 읽으면서 내용이 너무 좋아서 ‘언젠가 내게 더 익숙한 자바/코 틀린 기반으로 책이 나오면 얼마나 좋을까?’라는 생각을 했었는데, 정말로 나왔군요! 베타 리더로 참여하면서 읽어봤는데, 코딩 인터뷰 관련 책을 이보다 잘 쓸 수 있을까 싶을 정도로 너무 잘 쓰인 책입니다.
- 홍수영 / LINE, 서버사이드 소프트웨어 엔지니어

 

차례

[1부] 코딩 인터뷰를 준비하며
1장 코딩 인터뷰 & 코딩 테스트
기업 인재 등용의 관문, 코딩 인터뷰
__코딩 인터뷰와 국내외 기업들의 평가 기준
__국내 기업들의 코딩 테스트 플랫폼 활용 현황
온라인 코딩 테스트의 사전 준비 사항
__연습장과 필기 도구
__어떤 프로그래밍 언어가 유리할까
__자신만의 코드 스니펫 준비
__모든 테스트 케이스를 통과하도록 풀어야 한다
__타임아웃이 발생하는 경우
__예외 처리를 잊지 말자
__잘못 접근한 풀이, 어떻게 대처할까
__코딩 도구가 필요할까
__IDE에 부정적인 면접관이 있다면
__REPL 도구로 코드를 검증하자
온라인 코딩 테스트 플랫폼의 특징과 활용
__리트코드
__프로그래머스

[2부] 자바 & 코틀린
2장 자바, 세상에서 가장 유명한 언어
자바의 역사
자바의 주요 특징
__객체 지향 프로그래밍 언어
__함수형 프로그래밍 언어
자바의 도구
__즉시 실행 가능한 JShell
__자바는 어떻게 빌드하고 어떻게 실행할까
JVM 기반 언어의 등장

3장 코틀린, 구글이 인정한 공식 언어
코틀린의 주요 특징
__실용성
__상호운용성
__안전성
__우아함
코틀린의 기본 문법
__깔끔한 for 반복문
__정갈한 when 조건문
__편리한 함수 선언
__함수형 프로그래밍 언어
__가시성 제어자
__확장 함수
코틀린은 어떻게 빌드하고 어떻게 실행할까
__코틀린은 과연 느릴까

4장 자료형
자바는 어떤 자료형을 제공할까
__원시 자료형
__참조 자료형
__원시 자료형과 참조 자료형의 속도 비교
자바 컬렉션 프레임워크의 등장
__가장 자주 쓰게 될 리스트
__가장 유용하게 쓰게 될 맵
초기 자료형의 성능 문제
무한대 크기의 숫자를 저장할 수 있는 자료형
코틀린은 어떤 자료형을 제공할까
__코틀린 자료형의 속도는 과연 빠를까
코틀린은 컬렉션 프레임워크를 어떻게 구현했을까
__클래스의 기능을 확장하는 코틀린의 확장 함수
__코틀린이 별도로 구현한 컬렉션 인터페이스
자바 컬렉션 프레임워크의 실행 속도

5장 빅오
빅오
__n2과 2n의 비교
__빅오를 계산하는 실용적인 방법
__상한과 최악
__분할 상환 분석
__병렬화
__복잡도의 특징
자바 컬렉션 프레임워크의 빅오
__리스트 시간 복잡도
__맵 시간 복잡도
__데크 시간 복잡도

6장 문자열 처리
[문제01] 유효한 팰린드롬
[문제02] 문자열 뒤집기
[문제03] 로그 파일 재정렬
[문제04] 가장 흔한 단어
[문제05] 그룹 애너그램
[문제06] 가장 긴 팰린드롬 부분 문자열

[3부] 선형 자료구조
7장 배열
동적 배열
[문제07] 두 수의 합
[문제08] 빗물 트래핑
[문제09] 세 수의 합
[문제10] 배열 파티션 I
[문제11] 자신을 제외한 배열의 곱
[문제12] 주식을 사고팔기 가장 좋은 시점

8장 연결 리스트
[문제13] 팰린드롬 연결 리스트
[문제14] 두 정렬 리스트의 병합
[문제15] 역순 연결 리스트
[문제16] 두 수의 덧셈
[문제17] 페어의 노드 스왑
[문제18] 홀짝 연결 리스트
[문제19] 역순 연결 리스트 II

9장 스택, 큐
스택

자바에서 활용하기
__자바의 큐 선언
__자바의 스택 선언
__스레드 안전이 필요한 경우
[문제20] 유효한 괄호
[문제21] 중복 문자 제거
[문제22] 일일 온도
[문제23] 큐를 이용한 스택 구현
[문제24] 스택을 이용한 큐 구현
[문제25] 원형 큐 디자인

10장 데크, 우선순위 큐
데크
[문제26] 원형 데크 디자인
우선순위 큐
[문제27] k개 정렬 리스트 병합
[문제28] 원점에서 가장 가까운 k개의 점
[문제29] 더 맵게

11장 해시 테이블
해시
__생일 문제
__비둘기집 원리
__로드 팩터
__해시 함수
충돌
__개별 체이닝
__오픈 어드레싱
__언어별 해시 테이블 구현 방식
[문제30] 해시맵 디자인
[문제31] 보석과 돌
[문제32] 중복 문자 없는 가장 긴 부분 문자열
[문제33] 상위 k 빈도 엘리먼트
[문제34] 완주하지 못한 선수

[4부] 비선형 자료구조
12장 그래프
오일러 경로
해밀턴 경로
그래프 순회
__DFS(깊이 우선 탐색)
__BFS(너비 우선 탐색)
백트래킹
제약 충족 문제
[문제35] 섬의 개수
[문제36] 전화번호 문자 조합
[문제37] 순열
[문제38] 조합
[문제39] 조합의 합
[문제40] 부분집합
[문제41] 일정 재구성
[문제42] 여행 경로
[문제43] 코스 일정

13장 최단 경로 문제
[문제44] 네트워크 딜레이 타임
[문제45] k 경유지 내 가장 저렴한 항공권
[문제46] 게임 맵 최단 거리

14장 트리
트리의 각 명칭
그래프와 트리의 차이점
이진 트리
[문제47] 이진 트리의 최대 깊이
[문제48] 이진 트리의 직경
[문제49] 가장 긴 동일 값의 경로
[문제50] 이진 트리 반전
[문제51] 두 이진 트리 병합
[문제52] 이진 트리 직렬화 & 역직렬화
[문제53] 균형 이진 트리
[문제54] 최소 높이 트리
이진 탐색 트리(BST)
__자가 균형 이진 탐색 트리
[문제55] 정렬된 배열의 이진 탐색 트리 변환
[문제56] 이진 탐색 트리(BST)를 더 큰 수 합계 트리로
[문제57] 이진 탐색 트리(BST) 합의 범위
[문제58] 이진 탐색 트리(BST) 노드 간 최솟값
트리 순회
__전위 순회
__중위 순회
__후위 순회
[문제59] 전위, 중위 순회 결과로 이진 트리 구축

15장 힙
힙 연산
__삽입
__추출
[문제60] 배열의 k번째 큰 엘리먼트
[문제61] 이중 우선순위 큐

16장 트라이
[문제62] 트라이 구현
[문제63] 팰린드롬 페어

[5부] 알고리즘
17장 정렬
버블 정렬
삽입 정렬
병합 정렬
퀵 정렬
안정 정렬과 불안정 정렬
[문제64] 리스트 정렬
[문제65] 구간 병합
[문제66] 삽입 정렬 리스트
[문제67] 가장 큰 수
[문제68] 유효한 애너그램
[문제69] 색 정렬

18장 이진 검색
[문제70] 이진 검색
[문제71] 회전 정렬된 배열 검색
[문제72] 두 배열의 교집합
[문제73] 두 수의 합 II
[문제74] 2D 행렬 검색 II
[문제75] 입국심사

19장 비트 조작
부울 연산자
비트 연산자
비트 조작 퀴즈
__자릿수 제한 비트 연산
2의 보수
__2의 보수 숫자 표현
__비트 연산자 NOT
[문제76] 싱글 넘버
[문제77] 해밍 거리
[문제78] 두 정수의 합
[문제79] UTF-8 검증
[문제80] 1비트의 개수

20장 슬라이딩 윈도우
[문제81] 최대 슬라이딩 윈도우
[문제82] 부분 문자열이 포함된 최소 윈도우
[문제83] 가장 긴 반복 문자 대체

21장 그리디 알고리즘
배낭 문제
동전 바꾸기 문제
가장 큰 합
[문제84] 주식을 사고팔기 가장 좋은 시점 II
[문제85] 키에 따른 대기열 재구성
[문제86] 태스크 스케줄러
[문제87] 주유소
[문제88] 쿠키 부여

22장 분할 정복
[문제89] 과반수 엘리먼트
[문제90] 괄호를 삽입하는 여러 가지 방법

23장 다이나믹 프로그래밍
최적 부분 구조
중복된 하위 문제들
다이나믹 프로그래밍 방법론
__상향식
__하향식
[문제91] 피보나치 수
0-1 배낭 문제
[문제92] 최대 서브 배열
[문제93] 계단 오르기
[문제94] 집 도둑
[문제95] 도둑질

부록 2022년 카카오 공채 만점 가이드
[문제96] 신고 결과 받기
[문제97] k진수에서 소수 개수 구하기
[문제98] 주차 요금 계산
[문제99] 양궁대회
[문제100] 양과 늑대
[문제101] 파괴되지 않은 건물
[문제102] 사라지는 발판

 

 

'+ 펴낸 책' 카테고리의 다른 글

OpenAPI와 스웨거를 활용한 실전 API 설계  (0) 2023.12.13
모던 리눅스 교과서  (3) 2023.10.11
필독! 개발자 온보딩 가이드  (0) 2023.05.22
게임 시스템 디자인 입문  (0) 2023.03.24
제품의 탄생  (0) 2022.11.30

댓글