처음에 <게임으로 익히는 코딩 알고리즘> 제목을 봤을 때는 게임을 만드는건가? 싶어서 멈칫했다가, 책 소개를 보니 진짜 게임을 하는 방식으로 알고리즘을 공부할 수 있다길래 선택했다.
나의 상태:
- 파이썬 문법은 아는데, 작문을 못하겠다.
- 알고리즘 공부는 어떻게 해야 하는거지? 백준, 프로그래머스에 가서 문제 풀이?
- 쉬운 문제는 풀겠는데 조금만 난이도가 어려워지면 어디서부터 시작해야 할지도 모르겠다.
알고리즘
- 최선 또는 최적의 방법을 찾는 것 == 알고리즘
- 문제와 조건이 주어진다 -> 정답 구하기
하드웨어만큼 소프트웨어는 발전이 빠르지 않기 때문에 알고리즘을 얘기할 때는 보통 “처리 속도”를 높이는 걸 말한다.
바둑에 정석이 있듯이 프로그래밍에도 상황에 맞는 알고리즘을 선택하는 것이 문제 풀이의 핵심인 경우가 꽤 많습니다. 하지만 알고리즘 자체를 모르면 아무 소용이 없겠죠?
…
많이 생각하고 많이 연습하는 것만이 알고리즘을 학습하는 방법입니다.
…
우리가 보통 새로운 것을 배우는 방법은 이론을 공부하고 실전 또는 연습을 통해 공부한 이론을 적용해 보는 것입니다. 알고리즘 학습도 이와 다르지 않습니다. 먼저 알고리즘을 공부하고 문제 풀이를 통해 어떻게 적용할지 고민하면서 코드를 직접 작성하는 것이 일반적이면서 확실한 학습법입니다.
p. 22
알고리즘의 성능 표현
- 시간 복잡도(time complexity)
- 입력 값의 개수와 처리 시간과의 관계
- 공간 복잡도(space complexity)
- 입력 값의 개수와 메모리 증가량과의 관계
- 선형(linear) 복잡도: 일정한 비율로 증감
- 지수형, 로그형 시간 복잡도: 지수 | 로그 형태로 증가시
- 상수(constant) 시간 복잡도: 입력 데이터 증가 -> 처리 시간 변화