코딩 테스트 합격자가 되는 가장 확실한 방법!
프로그래머스 제공, 전문가가 모여 엄선한 빈출 100 문제로 철저하게 대비하세요!
신입 사원 코딩 테스트를 준비하고 있는가? 코딩 테스트는 문제만 열심히 푼다고 통과할 수 없다. 시험은 전략적으로 준비해야 한다. 『코딩 테스트 합격자 되기 - C++ 편』은 신입 사원 코딩 테스트 합격에 딱 맞는 빈출문제를 선정하고 풀이하기 위해 저자와 전문 교강사진이 오랜 시간을 들여 고민해 만들었다. 문제의 맥을 관통하는 자료구조와 알고리즘, 시간 복잡도 분석까지 완벽하게 풀이했다! 모든 내용은 친절한 설명에 풍부한 그림을 더해 말끔하게 이해할 수 있도록 했다. 코딩 테스트뿐만 아니라 그 다음에 있을 면접까지 대비할 수 있을 것이다. 이 책과 함께라면 합격은 여러분의 것이다.
Contents
[첫째 마당 : 코딩 테스트 사전 준비]
00장 코딩 테스트를 준비하기 전에
__00-1 합격자가 꼭 되고 싶은 여러분
__타인의 풀이를 보면 사고를 넓힐 수 있다
__나만의 테스트 케이스를 추가하는 건 좋은 알고리즘을 생각할 때 도움이 된다
__00-2 아는 것과 모르는 것을 명확하게
__첫 번째, 기록하라
__두 번째, 시험 보듯 공부하라
__세 번째, 짧은 시간 공부해서는 절대 코딩 테스트를 통과할 수 없다
__네 번째, 나만의 언어로 요약하라
01장 코딩 테스트 효율적으로 준비하기
__01-1 언어 선택하기
__01-2 문제 분석 연습하기
__첫 번째, 문제를 쪼개서 분석하라
__두 번째, 제약 사항을 파악하고 테스트 케이스를 추가하라
__세 번째, 입력값을 분석하라
__네 번째, 핵심 키워드를 파악하라
__다섯 번째, 데이터 흐름이나 구성을 파악하라
__01-3 의사 코드로 설계하는 연습하기
__첫 번째, 세부 구현이 아닌 동작 중심으로 작성하라
__두 번째, 문제 해결 순서로 작성하라
__세 번째, 충분히 테스트하라
02장 프로그래머스 완벽 활용 가이드
__02-1 프로그래머스는 어떤 곳인가요?
__02-2 프로그래머스 활용 가이드
__프로그래머스 살펴보기
__문제 풀이 과정 살펴보기
__02-3 문제 풀이 전 준비사항
03장 알고리즘의 효율 분석
__03-1 시간 복잡도란?
__1차원 배열 검색하기
__알고리즘 수행 시간을 측정하는 방법
__최악의 경우 시간 복잡도를 표현하는 빅오 표기법
__시간 복잡도를 코딩 테스트에 활용하는 방법
__03-2 시간 복잡도 계산해보기
__별 찍기 문제
__박테리아 수명 문제
04장 코딩 테스트 필수 문법
__04-1 프리미티브 타입과 레퍼런스 타입
__정수형
__부동소수형
__문자열
__04-2 STL
__STL
__STL과 자주 사용하는 필수 문법
__반복자
__04-3 STL의 컨테이너
__벡터
__셋
__맵
__정렬되지 않은 셋과 맵
__04-4 STL의 알고리즘
__count( ) 함수로 횟수 세기
__sort( ) 함수로 정렬하기
__next_permutation( ) 함수로 순열 생성하기
__unique( ) 함수로 중복 정리하기
__binary_search( ) 함수로 이진 탐색하기
__max_element( ), min_element( ) 함수로 최댓값, 최솟값 위치 구하기
__04-5 함수
__함수 정의
__함수 호출
__04-6 코딩 테스트 코드 구현 노하우
__조기 반환
__보호 구문
[둘째 마당 : 코딩 테스트 완전 정복]
05장 배열
__05-1 배열 개념
__배열 선언
__배열과 차원
__05-2 배열의 효율성
__배열 연산의 시간 복잡도
__배열을 선택할 때 고려할 점
__05-3 몸풀기 문제
__[문제 01] 배열 정렬하기★
__[문제 02] 배열 제어하기★★
__05-4 합격자가 되는 모의 테스트
__[문제 03] 두 수를 뽑아서 더하기★
__[문제 04] 모의고사★
__[문제 05] 행렬의 곱셈★
__[문제 06] 실패율★★
__[문제 07] 방문 길이★★
06장 스택
__06-1 스택 개념
__스택의 동작 원리 이해하기
__06-2 스택의 정의
__스택의 ADT
__06-3 몸풀기 문제
__[문제 08] 괄호 짝 맞추기★★
__[문제 09] 10진수를 2진수로 변환하기★
__06-4 합격자가 되는 모의 테스트
__[문제 10] 괄호 회전하기★
__[문제 11] 짝지어 제거하기★
__[문제 12] 주식 가격★★
__[문제 13] 크레인 인형 뽑기 게임★★
__[문제 14] 표 편집★★★★★
07장 큐
__07-1 큐의 개념
__큐에서 데이터가 이동하는 과정 살펴보기
__큐의 특성을 활용하는 분야
__큐의 ADT
__07-2 몸풀기 문제
__[문제 15] 요세푸스 문제★★
__07-3 합격자가 되는 모의 테스트
__[문제 16] 기능 개발★★
__[문제 17] 카드 뭉치★★
08장 해시
__08-1 해시의 개념
__해시 자세히 알아보기
__해시의 특성을 활용하는 분야
__08-2 해시 함수
__해시 함수를 구현할 때 고려할 내용
__자주 사용하는 해시 함수 알아보기
__08-3 충돌 처리
__체이닝으로 처리하기
__개방 주소법으로 처리하기
__08-4 몸풀기 문제
__[문제 18] 두 개의 수로 특정값 만들기★
__[문제 19] 문자열 해싱을 이용한 검색 함수 만들기★★
__08-5 합격자가 되는 모의 테스트
__[문제 20] 완주하지 못한 선수★
__[문제 21] 영어 끝말잇기★
__[문제 22] 전화번호 목록★★
__[문제 23] 할인 행사★★
__[문제 24] 오픈 채팅방★★
__[문제 25] 베스트 앨범★★
__[문제 26] 신고 결과 받기★★
__[문제 27] 메뉴 리뉴얼★★★
09장 트리
__09-1 트리 개념
__나무를 거꾸로 뒤집어 놓은 모양의 트리
__09-2 이진 트리 표현하기
__배열로 표현하기
__이진 트리 순회하기
__포인터로 표현하기
__인접 리스트로 표현하기
__09-3 이진 트리 탐색하기
__이진 탐색 트리 구축하기
__이진 탐색 트리 탐색하기
__이진 탐색 트리와 배열 탐색의 효율 비교
__09-4 몸풀기 문제
__[문제 28] 트리 순회★
__[문제 29] 이진 탐색 트리 구현★
__09-5 합격자가 되는 모의 테스트
__[문제 30] 예상 대진표★
__[문제 31] 다단계 칫솔 판매★★
__[문제 32] 길 찾기 게임★★★★
10장 집합
__10-1 집합과 상호배타적 집합의 개념
__집합의 개념
__상호배타적 집합의 특성을 활용하는 분야
__10-2 집합의 연산
__배열을 활용한 트리로 집합 표현하기
__유니온-파인드 알고리즘
__10-3 몸풀기 문제
__[문제 33] 간단한 유니온-파인드 알고리즘 구현하기★★
__10-4 합격자가 되는 모의 테스트
__[문제 34] 폰켓몬★
__[문제 35] 섬 연결하기★★★
11장 그래프
__11-1 그래프의 개념
__그래프 용어 정리
__그래프의 특징과 종류
__그래프 구현
__11-2 그래프 탐색
__깊이 우선 탐색
__너비 우선 탐색
__깊이 우선 탐색과 너비 우선 탐색 비교
__11-3 그래프 최단 경로 구하기
__다익스트라 알고리즘
__벨만-포드 알고리즘
__11-4 몸풀기 문제
__[문제 36] 깊이 우선 탐색 순회★
__[문제 37] 너비 우선 탐색 순회★
__[문제 38] 다익스트라 알고리즘★★★
__[문제 39] 벨만-포드 알고리즘★★★
__11-5 합격자가 되는 모의 테스트
__[문제 40] 미로 탈출★★
__[문제 41] 게임 맵 최단 거리★★
__[문제 42] 네트워크★★
__[문제 43] 양과 늑대★★★★★
__[문제 44] 배달★★★
__[문제 45] 경주로 건설★★★★★
__[문제 46] 전력망을 둘로 나누기★★
12장 백트래킹
__12-1 백트래킹과 백트래킹 알고리즘 개념
__백트래킹이란?
__백트래킹 알고리즘이란?
__유망 함수란?
__백트래킹 알고리즘 문제에 적용해보기
__N-퀸 문제
__12-2 몸풀기 문제
__[문제 47] 1부터 N까지 숫자 중 합이 10이 되는 조합 구하기★
__[문제 48] 스도쿠 퍼즐★★★
__12-3 합격자가 되는 모의 테스트
__[문제 49] 피로도★
__[문제 50] N-퀸★
__[문제 51] 양궁 대회★★
__[문제 52] 외벽 점검★★★★★
__[문제 53] 사라지는 발판★★★★★
13장 정렬
__13-1 정렬 개념
__정렬이 필요한 이유
__삽입 정렬
__병합 정렬
__힙 정렬
__우선순위 큐
__계수 정렬
__위상 정렬
__13-2 몸풀기 문제
__[문제 54] 계수 정렬 구현하기★
__[문제 55] 정렬이 완료된 두 배열 합치기★
__13-3 합격자가 되는 모의 테스트
__[문제 56] 문자열 내 마음대로 정렬하기★
__[문제 57] 정수 내림차순으로 배치하기★
__[문제 58] K번째 수★
__[문제 59] 가장 큰 수★★★
__[문제 60] 튜플★★
__[문제 61] 지형 이동★★★★
14장 시뮬레이션
__14-1 시뮬레이션 문제 풀이 노하우
__시뮬레이션 문제를 푸는 방법
__행렬 연산
__좌표 연산
__대칭, 회전 연산
__14-2 몸풀기 문제
__[문제 62] 배열 회전하기★★
__[문제 63] 두 행렬을 곱한 후 전치 행렬 만들기★
__[문제 64] 달팽이 수열 만들기★★
__14-3 합격자가 되는 모의 테스트
__[문제 65] 이진 변환★★
__[문제 66] 롤케이크 자르기★★
__[문제 67] 카펫★★
__[문제 68] 점프와 순간 이동★★
__[문제 69] 캐릭터의 좌표★★
15장 동적 계획법
__15-1 동적 계획법 개념
__점화식 세우기와 동적 계획법
__재귀 호출의 횟수를 줄여주는 메모이제이션
__최장 증가 부분 수열
__최장 공통 부분 수열
__15-2 몸풀기 문제
__[문제 70] LCS 길이 계산하기★★★
__[문제 71] LIS 길이 계산하기★★★
__[문제 72] 조약돌 문제★★★
__15-3 합격자가 되는 모의 테스트
__[문제 73] 피보나치 수★
__[문제 74] 2 × n 타일링★
__[문제 75] 정수 삼각형★★
__[문제 76] 땅따먹기★★
__[문제 77] 도둑질★★★★★
__[문제 78] 가장 큰 정사각형 찾기★★★
__[문제 79] 단어 퍼즐★★★★
16장 그리디
__16-1 그리디 개념
__그리디 알고리즘으로 거스름돈 내어주기
__그리디 알고리즘이 최적해를 보장하려면?
__16-2 최소 신장 트리
__신장 트리란?
__최소 신장 트리란?
__16-3 배낭 문제
__짐을 쪼갤 수 있는 부분 배낭 문제
__짐을 쪼갤 수 없는 0/1 배낭 문제
__16-4 몸풀기 문제
__[문제 80] 거스름돈 주기★★
__[문제 81] 부분 배낭 문제★★
__16-5 합격자가 되는 모의 테스트
__[문제 82] 예산★
__[문제 83] 구명보트★
__[문제 84] 귤 고르기★★
__[문제 85] 기지국 설치★★
[부록 1 : 모의고사]
_01회 모의고사
__[문제 86] 미로 탈출 명령어
__[문제 87] 택배 배달과 수거하기
__[문제 88] 개인 정보 수집 유효기간
_02회 모의고사
__[문제 89] 110 옮기기
__[문제 90] 쿼드 압축 후 개수 세기
__[문제 91] 없는 숫자 더하기
_03회 모의고사
__[문제 92] 불량 사용자
__[문제 93] k진수에서 소수 개수 구하기
__[문제 94] 거리두기 확인하기
_04회 모의고사
__[문제 95] 코딩 테스트 공부
__[문제 96] 두 큐 합 같게 만들기
__[문제 97] 숫자 게임
_05회 모의고사
__[문제 98] 보석 쇼핑
__[문제 99] 파괴되지 않은 건물
__[문제 100] 로또의 최고 순위와 최저 순위
Author
박경록
매일 퇴근과 점심 메뉴를 고민하는 9년차 시스템 S/W 개발자. 수학, 알고리즘 같은 실생활과 가깝고도 먼 학문을 좋아하고, 명확하지만 개선 여지가 있는 문제들에 대해 논의하고 사고를 개선해 나가는 과정을 좋아한다.
현 삼성 소프트웨어 개발자. 전 삼성 소프트웨어 멤버십 수료자.
매일 퇴근과 점심 메뉴를 고민하는 9년차 시스템 S/W 개발자. 수학, 알고리즘 같은 실생활과 가깝고도 먼 학문을 좋아하고, 명확하지만 개선 여지가 있는 문제들에 대해 논의하고 사고를 개선해 나가는 과정을 좋아한다.
현 삼성 소프트웨어 개발자. 전 삼성 소프트웨어 멤버십 수료자.