-
WIL_02 : 코딩 테스트..? 처음 뵙겠습니다개발자 이야기/Weekly I Learned(WIL) 2021. 3. 14. 17:00
어느 블로그에서 '앞으로 새로 만들어지는 직업군의 7할 이상이 IT분야다.' 라는 글을 보았다.
그래서인지, 요즘 같은 취업이 힘든 시기에 적지 않은 취준생들이나 타 직종 종사자들이 IT분야로 취업, 이직을 준비하는 것으로 알고 있다.
그러나 기업 입장에선 이렇게나 몰리는 많은 지원자들 중 본인 회사에 필요한 인재를 데려가고 싶어하는 것은 당연하다.
그렇기에 많은 기업들에서는 서류에서 포트폴리오와 대회 수상 이력을 등을 위주로 지원자들을 평가한 후,
허위 사실인지 아닌지 기본적인 실력을 알아보기 위해 '코딩 테스트'를 진행한다.
코딩 테스트란?
기업 / 기관에서 직원이나 연수생을 선발하기 위한 목적으로 시행되는 일종의 문제 풀이 시험
- 문제 해결 역량을 평가하는데 도움
- 지원자 수가 수천명을 넘어가는 규모가 큰 대기업 공채에서 효과적으로 사용
- 최근 온라인 코딩 테스트가 대세
- 출제 빈도가 높은 알고리즘 유형 : 그리디, 구현, DFS/BFS를 활용한 탐색
Weekly I Learned
알고리즘이란?
- 어떤 문제의 해결을 위하여, 입력된 자료를 토대로 하여 원하는 출력을 유도하여 내는 규칙의 집합.
여러 단계의 유한 집합으로 구성되는데, 각 단계는 하나 또는 그 이상의 연산을 필요로 한다. [표준국어대사전] - 프로그래밍 언어를 사용해 하나의 작업을 수행하는 방법 [Goffey, 2008]
알고리즘을 공부한다 = 가장 효율적인 알고리즘을 찾는 방법을 공부한다
그런데, 하나의 문제를 풀기 위한 방법은 여러가지가 존재할 수 있다.
이렇게 다양한 방법들이 존재할 경우, 어떤 방법이 가장 효율적인 방법인지 알 수 있는 기준은 없을까?
알고리즘의 성능을 평가하는 기준은?
복잡도(Complexity)
- 알고리즘의 성능을 나타내는 척도
- 만약 동일한 기능을 수행하는 알고리즘이 여러 존재한다면, 일반적으로 복잡도가 낮을수록 좋은 알고리즘이다.
- 단순히 '소스코드가 복잡하게 보인다'와는 다른 개념. 성능적인 측면에서의 복잡도를 의미함
- 시간 복잡도 & 공간 복잡도
- 빅오 표기법(Big-O Notation)을 통해 복잡도를 표기할 수 있음
시간 복잡도
- 특정 입력값과 문제를 해결하는 데 걸리는 알고리즘의 수행 시간
- 시간 복잡도가 높다 = 특정 알고리즘 수행 시간 측면에서 더 많은 시간이 소요될 수 있다
- 시간 복잡도가 낮다 = 특정 알고리즘이 더 빠르게 실행될 수 있다
공간 복잡도
- 특정 입력값과 문제를 해결하는 데 필요한 알고리즘의 메모리 사용량 분석
- 공간 복잡도가 높다 = 많은 메모리가 필요할 수 있다
- 공간 복잡도가 낮다 = 적은 메모리가 필요할 수 있다
알고리즘의 '효율성'을 평가하는 방법
점근 표기법 : 알고리즘의 성능을 수학적으로 표기하는 방법
빅오 표기법[ O(N) ]은 점근 표기법(. 알고리즘의 '효율성'을 평가)의 한 종류로,
최악의 성능이 나올 때 어느 정도의 연산량이 걸릴 것인지에 대해 표기함
▶ 주의사항
알고리즘의 성능은 항상 동일하지 않다.
언제든지 입력값에 따라서 달라질 수 있기에
어떤 값인지에 따라, 어떤 패턴을 가진 데이터인지에 따라 무엇인 좋은 알고리즘인지 달라질 수 있다.
마치며
처음으로 코딩 테스트를 접했을 때의 멘붕이 아직도 생생하다.
파이썬으로 코딩 테스트를 준비하는 입장에서 파이썬 문법이 익숙하지 않았기도 했지만
비전공자로서 수학 개념들을 강산이 변한 시간동안 접하지 않았기에 너무나 당황스러웠다.
문제의 이해 조차 못하는 자신을 보며 '큰일났다.. 포기를..'이란 생각이 당연히 들었다.
그런데 이상하게도 너무 막막한 상황이되니
오기가 생겼다.
그저 강사님들의 조언대로 2~3시간 문제를 붙잡고도 풀지 못했다면
구글링을 통해 여러 문제풀이 해설과 답이 되는 코드들을 분석하며 모르는 것을 하나씩 알아갔다.
그리고 또 풀어보기를 반복했다.
그렇게 악으로 깡으로 한 주만 버티고자 노력했다.
아직 알고리즘 주차가 한 주 더 남은 상황.
이 글을 작성하며 또 한 번
버텨내고자 한다.
훌륭한 가사에
내 마음을 반영해 개사해보았다.
미리 죄송하다.
더보기가수 비의 <깡> 가사 중..
불 꺼진 무대 위 홀로 남아서 ... 나 쓰러질 때까지
널 위해 춤을 줘꿈 위해 코딩을...
다시 한 번 죄송..
출처 : 항해99_알고리즘, 유튜브 동빈나 이코테
'개발자 이야기 > Weekly I Learned(WIL)' 카테고리의 다른 글
WIL_08 : "Movie Book"_미니 프로젝트_3 (0) 2021.04.25 WIL_07 : "Movie Book"_미니 프로젝트_2 (0) 2021.04.18 WIL_06 : "Movie Book"_미니 프로젝트 (0) 2021.04.11 WIL_03 : 삽질은 옳다 - [백준] 15649번 N과 M (1) (0) 2021.03.21 WIL_01 : "보자보자 운송장 서비스" (0) 2021.03.07