배우기
기초부터 정렬·재귀까지는 어느 언어로든 같은 순서로 배우고, 포인터·클래스처럼 그 언어에만 있는 것은 그 언어에서 배워요. 각 단원에서 언어를 바로 바꿔 볼 수 있어요.
기초
4단원흐름 제어
4단원데이터
5단원함수
2단원더 나아가기
10단원- 16사전(맵)열쇠로 값을 찾고 고치기: 단어 세기, 있나 확인, 열쇠 순서로 돌기.
- 17정렬작은 것부터, 큰 것부터, 내가 정한 기준으로 늘어놓기.
- 182차원 목록(격자)줄과 칸으로 된 격자: 읽기, 줄 합·칸 합, 이웃 칸을 범위 안에서만 보기.
- 19문자열 다루기자르기, 찾기, 바꾸기, 앞뒤 공백 다듬기, 비교, 자리 맞추기.
- 20정수와 실수0.1 + 0.2가 0.3이 아닌 이유, 소수 자리 맞추기, 반올림 규칙, 정수 넘침까지.
- 21재귀함수가 자기 자신을 불러요. 바닥 조건, 호출 스택의 깊이, 반복문과 메모까지.
- 22흔한 실수와 오류 메시지오류 메시지 읽는 법과, 어느 언어에서나 나오는 실수들: 한 칸 차이, = 과 ==, 정수 나눗셈, null, 범위 밖 번호.
- 23절댓값·거듭제곱·제곱근부호 떼기, 여러 번 곱하기, 제곱해서 그 수가 되는 값 찾기.
- 24세기, 누적 계산, 묶기한 번 훑으면서 조건에 맞는 것을 세고, 지금까지의 값을 들고 다니고, 열쇠별로 묶어요.
- 25자료 목록과 열거형묶음 자료를 목록에 모으고, 정해진 몇 가지 값에는 이름을 붙여요.
알고리즘
8단원- 26그대로 따라 하기와 모두 해 보기이야기가 시키는 대로 한 걸음씩 따라 하고, 후보를 하나도 빼놓지 않고 넣어 봐요.
- 27스택과 큐나중에 넣은 것부터 꺼내는 스택, 먼저 넣은 것부터 꺼내는 큐.
- 28이분 탐색정렬된 범위를 반씩 버리면서 값이나 조건을 처음 만족하는 자리를 찾아요.
- 29누적 합과 두 포인터구간의 합을 뺄셈 한 번으로 구하고, 두 자리를 앞으로만 옮기며 구간을 찾아요.
- 30최대공약수, 소수, 진법나머지로 최대공약수를 구하고, 체로 소수를 걸러 내고, 수를 다른 진법으로 써요.
- 31욕심쟁이와 우선순위 큐그때그때 가장 좋아 보이는 것을 고르고, 가장 작은 값을 바로 내주는 큐를 써요.
- 32그래프와 깊이 우선 탐색누가 누구와 이어져 있는지 적어 두고, 닿는 곳을 빠짐없이 찾아가기.
- 33너비 우선 탐색과 위상 정렬큐로 가까운 곳부터 넓혀 가장 적은 걸음 수를 구하고, 먼저 할 일이 앞에 오게 줄을 세워요.
언어마다 다른 것
10단원- 34포인터C++ · C값이 있는 자리(주소)를 들고 다니며 부른 쪽 변수를 바꿔요.
- 35동적 메모리C++ · C실행 중에 정한 크기만큼 메모리를 빌리고, 다 쓰면 꼭 돌려줘요.
- 36구조체C# · C++ · C관련된 값을 한 덩어리로 묶고, 그 덩어리가 복사되는지 공유되는지 알아 둬요.
- 37클래스와 객체Python · JavaScript · TypeScript · Java · C# · C++데이터(필드)와 동작(메서드)을 한 틀에 묶고, 그 틀로 객체를 여러 개 만들어요.
- 38인터페이스와 제네릭TypeScript · Java · C#인터페이스로 "이런 메서드가 있다"는 약속을 정하고, 제네릭으로 한 함수를 여러 타입에 써요.
- 39LINQ와 스트림Java · C#거르기·바꾸기·묶기·정렬을 반복문 대신 한 줄짜리 파이프라인으로 이어 써요.
- 40파이썬다운 코드Python내포, 간격 있는 자르기, 풀어 넣기, enumerate·zip, in, f-문자열, 그리고 세 가지 함정.
- 41자바스크립트의 같음과 참·거짓JavaScript · TypeScript== 과 ===, 거짓 같은 값, ?? 와 ||, 실수 하나뿐인 수, undefined 와 null, 그리고 TypeScript가 막아 주는 것.
- 42C++ 참조와 STLC++& 참조와 const 참조, vector·map·set·unordered_map, 람다를 받는 알고리즘, 그리고 복사·무효화·자동 삽입 함정.
- 43크레이콘만의 규칙Craykon나라 말로 쓰는 키워드, 계산을 멈추는 빈값, 엄격한 ==, 이어 내려가지 않는 선택.