2019-11-10
작성
알고리즘 사이트 모음
- 프로그래머스: https://programmers.co.kr/learn/challenges
- 백준: https://www.acmicpc.net/
- 코딜리티(Codility): https://www.codility.com/
- 코딩도장: http://codingdojang.com/
- 오일러 프로젝트: http://euler.synap.co.kr/
- CodeForces: http://codeforces.com
알고리즘 추천 책
- 코딩 인터뷰 완전 분석
- 알고리즘 문제 해결 전략
알고리즘 공부법
- 알고리즘과 관련된 이론을 공부하여 이해한다.
- 이론과 관련된 알고리즘 문제를 푸는 방법을 이해한다.
- 완벽하지 않아도 일부만 이해하는 것으로 충분하다.
- 관련 알고리즘 문제를 풀어본다.
- 한 문제는 길어야 2시간 정도만 고민해본다.
- 2시간 정도 고민해도 모르겠으면 포기하자.
- 정답 소스를 보거나 다른 사람의 풀이를 본다.
- 풀면서 이해가 잘 가지 않는 부분이 있으면 질문한다.
- 설마 이런 것을 질문해도 될까 고민되는 것도 질문해야 한다.
- 친구들이나 관련 커뮤니티를 적극 활용하자.
- 알고리즘을 이해해보고 문제도 다시 풀어본다.
- 모르겠으면 포기하고 다시 풀이를 본다.
- 그래도 모르겠으면, 다른 일을 하거나 다른 알고리즘 이론에 대해 공부하거나 다른 알고리즘 문제를 풀어본다.
- TIP
- 충분히 고민해보고 최대한 노력해보고 나서 포기하는 것이 중요하다.
- 충분히 고민하고 노력하는 시간은 한 문제에 1~2시간이 적절하다.
- 스스로 생각해서 해결하지 않고 답을 보고 해결했어도 그 문제는 해결했다고 생각하자.
- 1개를 3일에 걸쳐서 푸는 것보다 3개를 1일 동안 푸는 것이 더 좋다.
- 사용할 수 있는 관련된 라이브러리를 익혀서 사용하자.
- 미적분 문제를 풀기 위해서 굳이 미적분을 스스로 생각해서 만들 필요가 없이 공식을 이용하는 것과 같은 개념이다.
- 가장 중요한 것
- 프로그래밍을 많이 하는 것도 중요하지만 더 중요한 것은 생각을 많이 하는 것이다.
- 알고리즘 공부는 알고리즘을 만드는 것이 아니고, 생각의 과정을 배워서 나중에 스스로 그러한 생각을 해내는 것이기 때문이다.
- 또한 자신의 풀이에 대한 회고 와 더 좋은 풀이 방법을 찾는 것이 매우 중요하다.
나의 알고리즘 스터디 방법
- 모임 일정
- 일주일 2번 혹은 그 이상
- 스크럼 회의(10분의 회의) 진행
- 자신의 공부 진도와 한 일 및 다음 계획에 대한 공유를 10분 안에 진행
- 직접 만나서 서로의 풀이에 대한 피드백 후 좋은 풀이에 대한 분석 진행
- 모임 규칙(개인)
- 이론 정리
- 각자가 정한 범위의 알고리즘 이론에 대한 내용을 간단히 정리한다.
- ex) 개발 블로그 이용, 간단히 메모하는 정도 등 각자의 방식에 따라
- 문제 풀이
- 알고리즘 사이트 하나(위의 알고리즘 사이트 모음 참고)를 정한다.
- 각자가 해당 범위의 알고리즘과 관련된 동일한 알고리즘 문제를 푼다.
- 각자가 푼 문제에 대한 자신의 코드를 공유한다.
- ex) github를 이용
- 회고
- 상대방의 코드에 대한 피드백을 적는다.
- 상대방의 코드에 대한 피드백(주석)을 달아 github에 올린다.
- 자신의 코드에 대한 피드백을 확인하고 해당 문제에 대한 좋은 예제를 찾아 분석한다.
- 자신의 코드를 수정하여 다시 gitHub에 올린다.
- 이론 정리
- 모임 규칙(스터디 모임)
- 이론 정리 피드백
- 자신이 정리한 내용을 간단하게 공유한다.
- 문제 풀이 피드백
- 왜 그렇게 피드백을 주었는지, 그 피드백을 어떻게 수정해서 반영했는지를 공유한다.
- 좋은 코드에 대한 분석을 공유
- 해당 문제를 푸는 좋은 방법에 대해 공유한다.
- ‘나’의 알고리즘 스터디에서의 GitHub 협업은 Feature Branch Workflow 방법을 이용한다.
- 이론 정리 피드백
References
'Computer Science > 자료구조 & 알고리즘' 카테고리의 다른 글
자료구조(Data Structure)와 추상자료형(ADT) (1) | 2023.11.24 |
---|