코딩은 괜찮아!
생각이 문제지!
코딩 능력이 아니라
알고리즘 사고력이 필요하다
문제 해결은 퍼즐을 해결하는 과정과 같다
알고리즘 테스트 != 코딩 능력
알고리즘 테스트는 코딩 능력 테스트가 아니다. 알고리즘 테스트가 코딩 능력이라고 생각하는 것은 흔히 하는 실수이며, 실제로는 알고리즘 사고력이 핵심이다. 코딩을 못하는 게 아니라 알고리즘 사고력을 배우지 못했기 때문이다. 상위 레벨의 접근법으로 문제를 이해하고 풀어내는 과정이 알고리즘 사고력의 핵심이다. 문제에 급급해서는 상위 레벨의 접근법을 배울 수 없다. 문제를 어떤 전략으로 접근할지 결정하는 알고리즘 사고력을 배워야 한다.
알고리즘 사고력을 위해 엄선된 퍼즐
직접 코딩을 하는 책은 아니지만, 알고리즘을 설계하거나 분석하기 위한 일반적인 원리를 보여줄 만한 퍼즐을 골랐다. 이러한 퍼즐을 통해 배울 수 있는 알고리즘 설계 전략은 다음과 같다.
마방진, N-퀸 문제, 애너그램 감지, 최단 경로 개수, 네덜란드 국기 문제 등의 퍼즐 문제는 알고리즘 코딩 테스트의 단골 문제이며, 다양한 코딩 테스트 사이트에서 문제로 출제된 것을 확인할 수 있다. 문제를 이해하고 풀 수 있다면 코딩 능력은 문제가 되지 않는다. 이것이 이 책의 핵심 가치다.
퍼즐의 난이도별 접근
퍼즐이 어려운 독자를 위해 150개의 퍼즐을 난이도에 따라 초급, 중급, 고급으로 분류했다. 알고리즘 풀이 기법과 난이도에 따라 다양한 방식으로 문제에 접근할 수 있게 구성되어 있으며 이를 통해 알고리즘 디자인 전략과 분석 기법을 학습할 수 있게 했다.
[관련도서]
알고리즘 산책
누구나 자료 구조와 알고리즘 개정2판
문제 해결력을 높이는 알고리즘과 자료 구조
튜토리얼 퍼즐
__마방진
__n-퀸 문제
__유명 인사 문제
__숫자 맞히기(스무고개)
__트로미노 퍼즐
__애너그램 감지
__현금 봉투
__질투심 많은 두 남편
__구아리니 퍼즐
__파이 자르기 최적화
__공격하지 않는 킹
__밤중에 다리 건너기
__레모네이드 가판대 배치 방법
__양수로 바꾸기
__최단 경로 개수
__체스의 발명
__정사각형 덧붙이기
__하노이의 탑
__이 빠진 체스판 도미노로 채우기
__쾨니히스베르크의 다리 문제
__초코바 쪼개기
__옥수수밭의 닭
메인 섹션 퍼즐
__001 늑대, 염소, 양배추
__002 장갑 고르기
__003 직사각형 분할
__004 강 건너기
__005 행과 열 맞바꾸기
__006 손가락으로 숫자 세기
__007 밤에 다리 건너기
__008 조각 그림 맞추기
__009 암산
__010 동전 여덟 개 중에서 가짜 동전 찾아내기
__011 가짜 동전 무더기
__012 타일 채우기
__013 막힌 경로
__014 체스판 다시 조립하기
__015 트로미노 타일 채우기
__016 팬케이크 만들기
__017 킹이 갈 수 있는 곳
__018 끝에서 끝까지
__019 쪽번호 붙이기
__020 최대 합 내려가기
__021 정사각형 쪼개기
__022 팀 정렬
__023 폴란드 국기 문제
__024 체스판 색칠하기
__025 살아있기 좋은 날
__026 순위 구하기
__027 20변 게임
__028 한붓그리기
__029 마방진 톺아보기
__030 막대 자르기
__031 카드 맞히기 마술
__032 싱글 엘리미네이션 토너먼트
__033 마방진과 유사 마방진
__034 별 위의 동전
__035 물병 세 개
__036 +- 배치
__037 2n개의 말
__038 테트로미노 타일 배치
__039 판 밟기
__040 네 나이트 퍼즐
__041 원형으로 배치된 조명
__042 또 다른 늑대-염소-양배추 문제
__043 수 배치
__044 가벼운가 무거운가
__045 나이트 최단 경로
__046 삼색 배치
__047 전시 계획
__048 맥너겟 수
__049 선교사와 식인종
__050 마지막 공
__051 빠진 수 맞히기
__052 삼각형 개수
__053 용수철 저울로 가짜 동전 찾아내기
__054 직사각형 판 자르기
__055 주행거리 퍼즐
__056 신병 줄 세우기
__057 피보나치의 토끼
__058 한 번 정렬, 두 번 정렬
__059 두 가지 색 모자
__060 삼각형과 정사각형
__061 대각선상의 체커
__062 동전 줍기
__063 플러스와 마이너스
__064 팔각형 그리기
__065 암호 맞히기
__066 남은 수
__067 평균
__068 각 자리 숫자 더하기
__069 칩 옮기기
__070 점프해 쌍 만들기 I
__071 칸 표시하기 I
__072 칸 표시하기 II
__073 닭 쫓기
__074 위치 선택
__075 주유소 점검
__076 효율적인 루크
__077 패턴을 찾아서
__078 직선 트로미노 채우기
__079 사물함 문
__080 왕자의 여행
__081 유명 인사 문제 II
__082 모두 앞면 만들기
__083 제한된 하노이의 탑
__084 팬케이크 정렬
__085 루머 퍼뜨리기 I
__086 루머 퍼뜨리기 II
__087 뒤집힌 잔
__088 두꺼비와 개구리
__089 말 바꾸기
__090 자리 재배치
__091 수평 도미노와 수직 도미노
__092 사다리꼴 타일 배치
__093 전함 맞히기
__094 정렬된 표 검색
__095 최대-최소 무게
__096 계단 모양 영역 채우기
__097 탑스웝스 게임
__098 회문 개수 세기
__099 정렬 뒤집기
__100 나이트가 갈 수 있는 곳
__101 방에 페인트 칠하기
__102 원숭이와 코코넛
__103 반대편으로 점프하기
__104 말 나누기
__105 MU 퍼즐
__106 전구 켜기
__107 여우와 토끼
__108 최장 경로
__109 더블-n 도미노
__110 카멜레온
__111 동전 삼각형 뒤집기
__112 도미노 채우기 II
__113 동전 제거하기
__114 점 가로지르기
__115 바셰의 무게 추
__116 부전승 횟수
__117 1차원 솔리테어
__118 여섯 개의 나이트
__119 삼색 트로미노
__120 동전 분배기
__121 초강력 달걀 시험
__122 의회의 평화
__123 네덜란드 국기 문제
__124 사슬 자르기
__125 다섯 개를 일곱 번 안에 정렬하는 방법
__126 케이크를 공평하게 나누는 방법
__127 나이트의 여행
__128 보안 스위치
__129 리브의 퍼즐
__130 독이 든 와인
__131 테이트의 카운터 퍼즐
__132 솔리테어 군대
__133 라이프 게임
__134 점 색칠하기
__135 서로 다른 짝
__136 스파이 잡기
__137 점프해 쌍 만들기 II
__138 사탕 나누기
__139 아서왕의 원탁
__140 n-퀸 문제 다시 보기
__141 요세푸스 문제
__142 12개의 동전
__143 감염된 체스판
__144 정사각형 죽이기
__145 퍼즐
__146 움직이는 목표물 맞히기
__147 번호 달린 모자
__148 자유를 위한 동전 한 개
__149 자갈 펼치기
__150 불가리아식 솔리테어
ㆍ지은이 아나니 레비틴
ㆍ지은이 마리아 레비틴
ㆍ옮긴이 서환수
연관 프로그램
독자의견 남기기