알고리즘 공부의 기본적 원리

 

💬 10월의 3가지 목표


 

1️⃣ Inflearn 자바 알고리즘강의 마스터

 

106강중 40강 정도 남았으니, 하루 3~5문제 정도를 와그작와그작

 

2️⃣ BaekJoon - Gold & Programmers - Level3

 

코딩테스트 대비용 알고리즘 풀이 사이트는 백준, 프로그래머스, Leetcode, SWAcademy 정도가 있다.

이 중에서 나는 10월 말안으로 백준 골드 달성과 프로그래머스 레벨 3도달을 목표로 한다. 

그 정도여야 상시테스트에 응할 때 어려움이 없을 것이라는 찌라시를 토대로 정했다.

 

3️⃣ 개인 프로젝트의 테스트페이지 완성하기 (API를 이용한 이상형월드컵 페이지)

이커머스 느낌으로 기본적인 웹의 기능은 다 구현/배포(와 스프링공부 겸) 해보려하는데, 그 이전에 백-프론트 연결로 가장 만만해보이는 페이지부터 만들어보려고 한다. 이번 달의 메인으로 할 일은 알고리즘이니 남는 시간에 완성하는 것이 목표. 최종적인 마무리는 기간을 더 길게 두어야겠는데 이 정도부터 맛보고 다시 구체화 해야할 것 같다.

 

 

💬 알고리즘의 기본 풀이 원리를 다시 새기고 가자 


파인만 알고리즘

이 파인만 알고리즘은 특별해보는 명칭 아래에 긴장할 것 없이, 단순한 사고방식을 담았다. 내용은 다음과 같다.

1. 칠판에 문제를 적는다.
2. 골똘히 생각한다
3. 칠판에 답안을 적는다

문제를 읽고, 계획하고, 푼다. 이것이 알고리즘 풀이의 모든 기본 토대다

왜 다시 이것을 새겨야 하냐면 나의 알고리즘 풀이의 고질적 문제는 문제를 해독하는 데에 끈질김은 있었으나 그 해결법에 대한 계획을 세우지 않는 데에 있었다. 풀리지 않는 문제는 구글링을 했고, 남의 알고리즘을 필사마냥 그대로 타이핑하며 머리 아닌 손이 외우게끔 했다.

나는 알고리즘 풀이에 계획이 없었다.

 

파인만 알고리즘을 토대로한 문제 풀이의 6가지의 절차

1. 문제를 읽고 이해한다
2. 문제를 익숙한 용어로 재정의한다
3. 어떻게 해결할지 계획을 세운다
4. 계획을 검증한다
5. 프로그램으로 구현한다
6. 어떻게 풀었는지 돌아보고, 개선할 방법이 있는지 찾아본다

1️⃣ 문제를 읽고 이해한다

- 곁눈질 말 것

- 입출력 예제만으로 유추하지 말 것

- 문제가 원하는 바를 완전히 이해할 것

- 제약 조건을 바르게 이해할 것

2️⃣ 문제를 재정의한다

- 나를 위한 자신의 언어로 다시 풀어 쓸 것

- 현실 세계의 개념이 문제에 주어졌을 것이다, 이를 수학적/전산학적 개념으로 해석할 것

3️⃣ 해결 계획을 세운다

- 어떤방식으로 해결할 것인지 결정할 것

- 알고리즘과 자료구조를 선택할 것

4️⃣ 계획을 검증해본다

- 모든 경우에 요구 조건을 정확히 수행하는지 증명할 것

- 수행시간, 메모리 제한 요건에 부합하는지 확인할 것

5️⃣ 코드로 구현한다

- 이 과정속에서도 부정확하거나 비효율적인 측면을 생각해볼 것

6️⃣ 개선법을 찾아 회고한다

- 두 번의 풀이로 배움을 얻을 것이다

 

 

참고서적: 알고리즘 문제 해결 전략(2014)

 

 

대표이미지의 유머를 컴공생에게 써먹어봤어요