한화시스템 BEYOND SW 캠프 2기 - 6주 차
이번 한 주는 4일간 자료구조를 배우고 금요일 하루 동안 알고리즘을 배웠다.
처음에 스택과 큐를 배웠는데 이전에 독학했을 때는 개념만 공부해 봤지 직접 구현하진 않았는데 이번에 직접 구현해 볼 수 있어서 좋았다.
스택과 큐를 배우고 강사님이 내주신 하노이 탑 문제를 풀어보는데 너무 어려웠다. 재귀를 이용해서 어찌저찌 풀었는데 너무 이해하기 어려웠었다.
하지만 계속 공부해 보고 고민하는 시간을 많이 가져보니 점차 이해하게 되었고 자료구조 마지막날에 트리를 배우면서 조금 더 수월하게 구현해 볼 수 있었다.
트리를 배우고 나서 강사님이 내주신 3개의 트리 중 AVL을 맡아서 목요일에 발표하게 되었다.
내가 팀장을 맡아서 나머지 팀원들을 알려줬는데 AVL을 구현하는 것보다 가르쳐주는 게 더 어려웠다.
내가 이해하고 생각하는 것을 AVL 트리를 모르는 팀원들이 이해하기 쉽도록 설명하는 게 너무 어려웠다. 그리고 이것저것 알려주고 싶은 마음이 앞서 말도 빨라져서 팀원들이 따라오는데 힘들어했던 것 같았다.
나중에 취직하게 된다면 누군가에게 알려주는 일도 많아지고 다른 사람들을 설득해야 되는 상황이 많이 있을 것 같아서 내가 생각하는 것들을 정리해서 잘 설명해 주는 능력을 키워야겠다고 생각했다.
번개 맞을 뻔(?)했던 일주일
전에 강사님이 해주셨던 말씀 중에서 개발자의 실력 향상에 관한 얘기가 있었다.
개발 공부를 하다 보면 실력 향상이 꾸준하게 되는 것이 아닌 갑자기 번개 맞을 것처럼 급격하게 실력이 오르고, 그다음에 지진부진하다가 또 번개를 맞으면 실력이 오른다고 하셨다.
처음에는 저게 무슨 말인가 싶었는데 이번 한 주간 공부를 해보고 직접 구현해 보면서 조금이나마 번개를 맞았다는 것(?)이 뭔지 알 것 같았다.
자료구조와 알고리즘을 공부하며 내가 생각하는 것을 직접 구현해 보고 잘 안되면 계속 코드에 대해서 고민했었다. 그렇게 고민하다 보니 갑자기 다른 방법들이 생각나게 되고 그것들을 적용해 보니 잘 동작하여 뿌듯한 기분이 들었다.
처음에는 하노이 탑 문제도 잘 이해하지 못했는데 점차 AVL 트리도 구현해 보고, A* 알고리즘도 구현할 수 있게 되었다.
마음으로는 이해하지만 손이 안 나가는 문제
알고리즘 문제들을 풀 때마다 좌절감을 느낄 때가 많다.
뭔가 문제는 이해되지만 막상 코드로 구현하려고 하면 신기하게도 손이 안 나간다. 같이 수업을 듣는 다른 분들에게 물어보면 비슷한 경험을 하는 것 같았다.
문제는 이해했는데 코드로 구현을 못한다면 2가지 문제라고 판단했다.
1. 문제를 잘못 이해한 경우
2. 문법의 기본기가 부족한 경우
나는 보통 2번에 해당한다. 문제는 이해했지만 막상 코드로 작성하려고 하면 생각대로 되지 않는다.
그래서 요즘 내가 사용하는 방법은 일단 내 생각을 그대로 작성해 보는 것이다.
반복문이나 조건문 같이 완전 기본적인 문법들을 사용해서 내 생각대로 먼저 구현해 보고 수정할 부분이 있으면 수정하는 방식으로 요즘 코딩하고 있다.
이렇게 하니깐 의외로 문제가 잘 풀렸다. 역시 아무것도 작성하지 않고 고민만 길게 해 봤자 어차피 1시간 고민해서 못했던 것을 2시간 고민한다고 해결하지 못한다.
마음으로 이해하는데 손이 안 나간다면 일단 손부터 꺼내보자.
뇌를 가지고 종이접기 해보기
우리가 알고 있는 색종이로 종이접기를 생각해 보자.
종이 접기를 안 하고 그냥 놔두면 색종이지만 접게 된다면 도형으로 만들 수도 있고 다른 모형으로도 만들 수도 있다.
코딩하는 것도 그냥 남의 코드를 가져다가 쓴다면 색종이를 그대로 두는 것과 같다고 생각한다.
다른 사람이 만들어 놓은 코드를 가져와서 사용해도 내가 생각했던 것들을 적용해 보고 다르게 바꿔보면서 내 것으로 만들어야 제대로 사용했다고 생각한다.
내 뇌를 꾸준히 접어보자. 이렇게도 생각해 보고, 저렇게도 생각해 보면서 기존의 틀이나 이미 만들어진 코드에서 생각을 멈추지 말고 계속 어떻게 개선할 수 있을지 고민해 보자.
알고리즘의 마지막과 스프링의 시작
돌아오는 한 주는 수요일까지 알고리즘을 학습하고 목요일부터 스프링이 시작된다.
드디어 본격적인 스프링이 시작되는데 설레기도 하면서 약간의 불안함과 걱정이 있다.
스프링을 활용하여 프로젝트도 해봤지만 제대로 이해하고 사용한 것이 아니었다. 이번에 약 한 달간 스프링을 공부하게 되는데 이번 기회에 확실히 스프링을 학습해야겠다고 다짐했다.
알고리즘은 이번에 끝났다고 잊어버리는 것이 아닌 계속 문제를 풀어보며 감을 잃지 않도록 해야겠다. 취업을 하기 위해서는 꼭 필요한 지식이기 때문에 꾸준히 풀어보면서 알고리즘 지식도 쌓아야겠다.
'한화시스템 BEYOND SW 캠프 2기' 카테고리의 다른 글
한화시스템 BEYOND SW 캠프 2기 - 8주차 회고 (2) | 2023.12.25 |
---|---|
한화시스템 BEYOND SW 캠프 2기 - 7주차 회고 (1) | 2023.12.18 |
한화시스템 BEYOND SW 캠프 2기 - 5주차 회고 (0) | 2023.12.03 |
한화시스템 BEYOND SW 캠프 2기 - 4주차 회고 (1) | 2023.11.26 |
한화시스템 BEYOND SW 캠프 2기 - 3주차 회고 (2) | 2023.11.19 |