답지를 많이 베꼈어요 🐣

코세라 알고리즘 강의를 들으면서 솔직히 강의의 딱 40 ~ 50% 정도 이해하고 가는 것 같다. 코세라는 성적 등급 시스템이 없지만 아마 모든 강의 알고리즘의 수도코드,시간복잡도를 꽤 이해하고 과제에 있는 문제들에 바로 적용할 수 있는 학생들은 💯 학생일 것이다.

나는 처음에 파이썬 for,while 문도 햇갈릴 정도로 코드 작성도 왕초보자인 상태로 강의를 04까지 마쳤기 때문에 초반에는 input(),sys.stdin.readlines() 이런 거 이해하고 파이썬 익숙해지는 데에 집중할 수 밖에 없고, 그 후부터 코스 4번째 강의를 달려오고 있는 이제서야 수도코드 보는 법과 시간복잡도에 조금 익숙해졌다. 이렇게 기초가 정말 많이 부족했기 때문에 항상 과제를 제출하면 test 13/40 정도에서 시간 초과 아니면 wrong answer 메시지가 떴고, 하루 반나절을 보내며 고민한 나는 더이상 참을 수 없어서 https://github.com/Sonia-96/Coursera-Data_Structures_and_Algorithms 답지를 베껴서 제출하기 시작했다. 그래도 양심은 있어서 최대한 어딘가에 살고 계실 이 💯 학생 Sonia의 답지를 이해하려고 코드를 뜯어보기는 했다.

이제 그저 바로잡을 차례인 것 같은 🐥

처음에 알고리즘 공부 시발점을 코세라로 잡은 이유는 정말 내가 어떠한 정보력도 없었기 때문이다. 당시 나한테 한국의 유명한 알고리즘 사이트들은 너무 어마무시한 존재였고, 단순히 문제만 푸는 사이트인 줄 알았다. 나중에 이러한 사이트들에서 훨씬 효율적인 순서의 강의를, 한국어로 진행한다는 사실을 깨달았지만 그때는 이미 코세라 알고리즘 패키지를 구입한 후였다. 이제 코스 05 Advanced Algorithms and Complexity 를 마저 등록해서 시작할지 (그러면 바로 49달러가 날라가는 ;;ㅠ) 선택의 기로에 있다. 아니… 근데 사실 그 전 기초 알고리즘도 구멍이 진짜 많은데 Advanced Algorithms 이요 ?! 라는 생각이 든다. 훌륭하게 코스를 이수하고 자신의 코드도 올린 Sonia 라면 코스 06번째까지 착착착 이수했을 것이지만 나한테는 이런 방법보다는 그 전에 있었던 구멍을 좀 매꾸고 프로그래머스 등등의 사이트에서 연습문제들도 좀 풀어보면서 기초 알고리즘 먼저 복습해서 내껄로 만들어야겠다고 다짐한다. 05,06 은 마저 이수하지 않고 현재 듣고 있는 패키지를 중단시켜버릴 것이다. 나같이 파이썬도 서툴고, 알고리즘 공부가 처음인 상태에선 이런 엄청 깊게 들어가는 강의가 맞지 않는 것 같다. 얕은 물에서 여러번 부딪혀보고 싶다.

그래서 이틀을 주기로 하루 - 알고리즘 수도코드,시간복잡도 복습 / 하루 - 프로그래밍 사이드에서 난이도 하,중,중상 2문제 ~3문제 풀기 이런 식으로 지금껏 강의 들은 알고리즘을 복습하려고 한다. 탕탕 ! 하나씩 공부할 때마다 쫙쫙 그어버릴 것이다. 고로 이 포스팅도 계속 업데이트 되겠지 🧐

01 ~ 04 까지 어느 정도 복습이 끝나면 (아마 느즈막히 내년 여름 ? ) 그때 05 단일 강좌만 별도로 신청해도 될 것 같다. 이미 코세라 시스템에 너무 익숙해져버려서 여기가 편하다.

공부 목록 📝

Algorithmic Toolbox

Greedy Algorithms

Binary Search

Divide and Conquer

Selection Sort

Merge Sort

Quick Sort

Dynamic programming

Data Structures

array

stack

queue

tree

dynamic arrays

binary tree

heap (heap sort)

priority queue

disjoint set

hash tables

binary search trees

avl trees

splay trees

Algorithms on Graphs

bfs

다익스트라

Bellman-ford

minimum spanning trees

kruskal’s algorithm

Prim’s algorithm

dfs

Algorithms on Strings

brute force

버로우즈 휠러변환

KMP

suffix array

LCP array