-
첫 코딩 테스트 후기일상, 생활 기록 2020. 5. 11. 14:26
예상대로 쉽지 않았다. 그럼에도 얻은 것이 많았다
머리털나고 처음 코딩 테스트를 쳐봤다. 결과는 아직 발표나지 않았지만, 예상대로 상당히 당황하고 어려웠던 느낌.
그 전까지 알고리즘에 대해서 깔짝깔짝 접해본 적은 있지만, 제대로 공부해본건 이번이 처음이었다. 하지만 시험을 준비하는 만큼 필사적으로 공부해서 단기간에 실력이 상당히 늘은 것 같다.(물론, 나의 이전 상태와 비교해서 말이다.)
결과가 어떻든 간에 알고리즘과 더 친해졌고, 나도 코딩테스트 할 수 있구나! 라고 자신감을 얻을 수 있었던 경험인 것 같다. 또, 내가 가고 싶은 회사들을 가려면 앞으로도 계속 코딩 테스트를 접해봐야겠지. 그래서 이번에 경험한 코딩 테스트 준비 과정을 기록해보려고 한다.
알고리즘을 왜 공부해야하는 지에 대한 생각 정립
나는 항상 무엇인가 공부하거나 일을 할 때, 이것을 왜 하는지에 대한 이유가 스스로 납득이 되야 능률이 확 오르는 스타일이다. 알고리즘은 그 이유가 나한테 쭉 와닿지 않았다. 물론 내가 원하는 기업을 가기 위해선 코딩 테스트를 봐야한다고는 알고 있지만, 프로그래밍을 하는 것이 좋은 회사를 가려고 하는 건 아니니깐?!..라고 말하지만, 좋은 기업을 가고 싶기는 하다.
어쨌든 저번 포스팅에도 글을 올렸지만, 알고리즘을 공부하고 테스트하는 것은 단순히 알고리즘을 잘하기 위한 이유만은 아니다. 클라이언트든 백엔드든 프로그래밍을 하는 사람이라면 결국 문제 해결을 하는 과정이 필요한데, 컴퓨터를 다루는 사람들이기 때문에 당연히 컴퓨터에 대한 구조를 잘 아는 것이 중요하지 않을까? 이는 앞으로 더 많은 문제들을 접하는데에 있어서 분명한 차이를 만들 것이다.
구현을 하고 동작하는 프로그램을 만드는 것은 솔직히 누구나 가능하다. 조금만 공부하고 관심을 가진다면. 하지만 좀 더 안정적인 프로그램을 만들고, 비슷한 프로그램들 사이에서도 더 빠르게 동작하는 프로그램을 만드는 것이 중요하지 않을까? 이런 고민을 한다면 자연스럽게 메모리가 어떻게 사용되고, 동작 시간은 얼마나 걸리는지에 대해 고려를 해야할 것이다.
그래서 CS Fundamental과 자료구조, 알고리즘이 중요한 것이다. 특히 우리가 이름만 들으면 알만한 기업들은 다 코딩 테스트를 친다. 그만큼 이 알고리즘과 자료구조에 대해 중요하게 생각한다는 것이다. 그들이 구현이 중요한 것을 몰라서 그러는 것일까? 구현만 할 수 있는 개발자는 언젠가 도태되고, 대체될 수 있다. 하지만 알고리즘과 자료구조를 잘 이해하는 개발자는 대체되기 어렵다.
여기에 대해선 해당 블로그에서 많은 정보를 얻었으니 한번 참고해보자.
실무 개발자에게 알고리즘은 덜 중요할까?
https://medium.com/@ghilbut/%EC%8B%A4%EB%AC%B4-%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%97%90%EA%B2%8C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%80-%EB%8D%9C-%EC%A4%91%EC%9A%94%ED%95%A0%EA%B9%8C-fcbab7f87074많이 푸는 것도 중요하지만 무엇이 부족하는지 아는 것이 더 중요하다
일단 자료구조에 대해서 수업을 들어본 적은 있지만, 완전한 전공도 아니고(IT관련 수업을 듣는 전공이긴 하지만, 깊게 배우진 않는다) 제대로 알고리즘에 대해 공부해본 적이 없기 때문에 모든 문제를 풀어도 어렵게 느껴졌다. 그래서 자료구조를 다시 복습하면서, 백준, 종만북 등으로 공부를 했다. 안드로이드를 하면서 자바 언어만 접했기 때문에 종만북의 c++ 예제는 좀 어렵게 다가오더라.
문제는 노트에 어떻게 문제에 접근할 지에 대해 적어보면서 풀었다. 하지만 문제 접근 자체를 어떻게 해야할 지에 대해서 감이 안오면 바로 해설을 찾아보고 해당 개념에 대해서 공부하는 식이었다.
시간이 지날수록 이 문제가 어떤 지식을 요구하고, 어떻게 접근해야 할 지에 대해서 감이 잡히긴 했는데, 막상 코드로 옮기려니 막히는 부분이 한 두가지가 아니었다. 어떤 블로그를 참고해보니 이 부족한 능력이 구현력이라고 생각했고, 해결 과정을 순서도로 최대한 디테일하게 적으면서 이 문제를 해결하려고 했다. 또, 반복문과 조건문에서 디테일하게 범위를 설정하는 부분에서 자꾸 실수를 반복했다. 이 부분은 반복문을 짤 때, 최대한 고민을 하고 짜야되는데 그런 생각이 아직은 좀 못 미치는 것 같다.
어쨌든, 처음에는 기본 배경 지식이 부족해서 이 부분에 대해서 해결하려고 노력했고, 나중에는 구현력이 부족해서 이 부분을 해결하기 위해 노력했다. 구현력은 여전히 부족한 것 같지만, 앞으로 구현하는 부분을 더 잘해보려고 공부해야겠다.
이 부분은 하단의 블로그에서 많이 참고했다.
알고리즘 공부, 어떻게 해야하나요?
https://baactree.tistory.com/52더 어려운 문제, 재밌는 문제들을 많이 접해보자
최근 코딩 테스트 문제들은 로직을 어느정도 제시해주거나, 힌트를 줘서 그 로직을 구현하는 것을 테스트 하는 것 같다. 혹은 기본적인 자료구조나 문자열에 대한 문제를 주는 것으로 보인다. 문제로 나오는 주제들은 크게 다르지 않다는 것이다.
하지만 종만북을 공부하면서 여러 어려운 문제들을 접했는데 이런 문제들이 조금 재밌었다. 특히 프로그래밍 대회에서 나오는 문제들이 이것저것 고려할 것이 많고, 생각을 깊게 해야 풀 수 있는 문제들이라 이런 문제들을 풀어보는 것이 알고리즘에 대해 좀 더 흥미를 가질 수 있게 할 것 같다. 진짜 현실의 문제들을 해결하려면 이 정도는 풀어봐야하지 않을까? 단순히 코딩테스트를 통과하기 위해서가 아닌 더 나은 개발자가 되기 위해서 재밌는 문제들을 많이 풀어보고 싶다.
'일상, 생활 기록' 카테고리의 다른 글
개인정보처리방침 - 군머니티 (0) 2020.07.16 초보의 정규표현식 배우기 (0) 2020.05.12 진짜 개발은 리팩토링부터 시작된다 (0) 2020.04.18 배우고 싶다면 코드리뷰 (0) 2020.03.26 2020년 책장 (0) 2020.02.27