코딩 부트캠프 2주차 회고 : 알고리즘

Gom·2021년 3월 14일
0

기록

목록 보기
2/8
post-thumbnail

무엇에 도전했는가

32개의 알고리즘 문제풀이와 17개의 알고리즘 기법 구현 코드를 작성하였다.

무엇을 배웠는가

알고리즘과 자료구조를 공부했다. 개념 공부 즉시 관련 문제를 풀며 배운 것을 적용해보려했다. 구현 과정을 거치며 파이썬 문법 지식을 늘렸다.

  • 알고리즘

동적계획법(Dynamic programming), DFS&BFS(깊이우선탐색과 너비우선탐색), Brute-force, 그리디알고리즘, 이진탐색, 재귀함수, 정렬(버블정렬, 선택정렬, 삽입정렬, 병합정렬) 등 설계기법을 배웠다.

시간복잡도, 공간복잡도, 점근표기법 등을 통해 효율성 판단 기준을 알게 되었다.

  • 자료구조

어레이와 링크드리스트, 클래스, 스택, 큐, 트리, 힙, 그래프

  • 파이썬 문법 지식

설계한 알고리즘을 구현하는 과정에서 수많은 구글링을 하고 타인의 코드들을 접했다. 새로운 문법을 알게되었을 뿐 아니라 사용하고 있었지만 이해가 부족했던 부분이 정리되는 경험을 했다.

무엇이 달라졌는가

  • 알고리즘과 자료구조, 문법의 관계를 이해할 수 있게 되었다.

누군가에겐 황당하게 들릴 수 있지만 알고리즘과 자료구조 개념에 일대일로 대응되는 형태의 함수들이 존재할 것이라는 오해를 한 채 공부를 시작했다. (파이썬의 sort함수와 정렬기법에서 시작된 오해) 때문에 문제풀이 시 종종 개념이 뒤섞여서 각 관점을 의식적으로 분리하는 연습에 시간을 쏟았다. 문법이란 결국 해당 언어에 국한된 것이므로 개념적인 지식인 알고리즘과 자료구조의 내용과 원리를 이해해야 함을 알게 되었다.

  • 알고있다는 착각을 경계할 수 있게 되었다.

팀원들과 진행한 코드 리뷰를 통해 느꼈다. 타인이 잘 정리해둔 정보와 코드를 참고하는 과정에서 이해되었다고 느꼈어도 그것을 말로 설명하려 하면 부족한 부분이 드러난다. 내게 입력된 정보는 반드시 출력시켜가며 학습할 것. 꾸준한 팀 스터디와 코드 리뷰를 통해 개선해 나가겠다.

무엇을 개선해야 하는가

  • 구글링 목적을 명확히 하여 빠르게 빠져나온다.

아는 것보다 모르는 것이 많은 지금, 모든 것이 새롭고 알고싶다. 문제 해결을 위해 구글링을 하다보면 어느새 망망대해에 떠 있는 나를 발견하게 된다. 해결 방법인 A를 이해하기 위해 관련된 B개념을 찾고.. 그러다 C개념으로 이동하고 예시로 적어둔 코드에서 새로운 문법을 발견하여 궁금해하는식으로 말이다. 모두 도움 될 지식이겠지만 구글링의 목적을 명확히 하여 시간을 효율적으로 사용하자.

→ (해결방안) 학습 과정에서 파생된 궁금증은 커리큘럼 관련도에 따라 notion과 클리크(크롬 확장 프로그램)로 나누어 기록해두고 우선순위가 높은 문제를 해결한 후에 보도록 하자.

  • 알고리즘 설계 기법별로 코드 구현 공통점을 스스로 도출해보자.

DP 바텀업 방식을 문제에 적용하는 것이 유독 막연하게 느껴졌다. 여러 문제를 접하고 그 때마다 개념을 되뇌이며 분석해보니 구현 방식에서 몇 가지 공통점을 찾을 수 있었다. 깔끔하게 정리된 정보로도 와닿지 않던 개념에 한 발 가까워진 기분을 느꼈다. 다른 기법의 문제풀이 시에도 이 방식을 적용하여 정리해보자.

profile
안 되는 이유보다 가능한 방법을 찾을래요

0개의 댓글