백엔드 신입 개발자가 쌓아야 하는 역량- 자료구조/알고리즘/코딩테스트편

PETER LEE·2024년 2월 12일
0

블로그 과제

목록 보기
4/4

이번 주에는 4차 블로그 과제인 “백엔드 신입 개발자가 쌓아야 하는 역량”에서 신입 개발자에게 왜 자료구조/알고리즘이 필요한지와 어떤 개념이 중요한 것 같은지에 대해 설명할 것이다.

자료구조란 여러 데이터들의 묶음을 저장하고 사용하는 방법을 정의한 것이다. 신입 개발자에게 자료구조가 필요한 이유는 첫 번째로 데이터를 체계적으로 저장하고, 효율적으로 활용하기 위해서다. 두 번째로 대부분으로 자료구조는 특정한 상황에 놓인 문제를 해결하는 데 특화 되어 있다.[1]

많은 자료구조를 알아두면, 특정 문제를 해결하는 데 상황에 가장 적합한 자료구조를 빠르게 찾아 데이터를 정리하고 활용해서 문제를 빠르고 정확하게 해결할 수 있다. ->문제 해결 능력을 필요로 하는 알고리즘과 굉장히 밀접한 연관성이 있다. 결론적으로 문제해결을 하기 위해 배우는 것이다.[1]

알고리즘은 어떤 문제를 풀기 위한 단계적 절차이다. 알고리즘을 설계한다는 것은 문제 풀이 절차를 설계한다는 의미고, 알고리즘을 구현한다는 것은 프로그래밍 언어를 이용하여 문제 풀이 절차를 실제로 동작하는 코드로 작성하는 것이다.[2]

알고리즘이 신입 개발자에게 필요한 이유는 알고리즘을 공부한다는 것은 어떤 문제를 분석하여 컴퓨터가 알아 들을 수 있는 형태로 해법을 설계하고 구현하는 과정을 익히는 것을 의미하기 때문이다. 알고리즘 동작에 소요되는 메모리(공간)와 프로세싱 파워(시간)를 깊이 이해하고, 자원을 효율적으로 활용하면서도 고성능의 코드를 작성하는 방법을 익히는 것이다. [2]

신입 개발자들에게 있어 자료구조/알고리즘 중에서 중요한 개념은 Array(배열), LinkedList (연결리스트), Stack(스택), Queue(큐)이다. Array(배열)은 특정 요소를 빠르게 읽어야 하거나 다차원 데이터를 다룰 때 필요하다.[3]

연결리스트는 Alt+Tab을 사용해서 프로그램 간 전환 및 갤러리에 쓰인다. 스택은 브라우저의 뒤로 가기, 실행 취소, 후위 표기법 계산에 쓰인다. 마지막으로 큐는 프로세스 관리, 윈도우 시스템 메세지 처리기, 캐시에 쓰인다.[3]

알고리즘에는 검색/재귀/정렬 알고리즘이 있다. 검색 알고리즘에는 선형검색(복잡도 O(n)), 이진검색(복잡도 O(log(n)))이 있고, 재귀에는 피보나치 수열, 최대공약수, 하노이의 탑 알고리즘 등이 있고, 정렬에는 선택/삽입/병합정렬, Quick Sort, Bubble Sort 등이 있다. [4]

위 개념 중에서 중요한 개념은 이진검색(복잡도 O(long(n)))이 있는데, 정렬된 배열에서 원하는 key값을 찾는 알고리즘인데 선형검색보다 빠르기 때문에 중요하다. 또한 피보나치 수열도 중요한데, 피보나치 수열은 각종 강의나 코딩테스트에서도 등장하는 중요한 개념이기 때문이다. [4]

지금까지 신입 개발자에게 왜 자료구조/알고리즘이 필요한지, 또한 어떤 개념이 중요한 것 같은지 작성하였다. 앞으로 신입 개발자들 뿐만 아니라 본인도 자료구조/알고리즘/코딩테스트를 열심히 공부해서 훌륭한 개발자가 되도록 노력해야 할 것이다.

<출처> [1] 하나몬, HANAMON, “[자료구조] 자료구조란? (자료구조를 배우는 이유)”, https://hanamon.kr/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B 0%EB%9E%80-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%EB%A5%BC-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EC%9D%B4%EC%9C%A0//, 2021.07.08
[2] 한빛미디어, 한빛출판네트워크, “개발자는 반드시 자료구조와 알고리즘을 배워야 할까?”, https://www.hanbit.co.kr/channel/category/category_view .html?cms_code=CMS8073601837, 2022.07.29
[3] Skills, Network Basic(티스토리), “[자료구조] 자료구조 종류”, https://jin-network.tistory.com/127, 2022.05.19
[4] dokil, 오키도키, 개발공부하는 블로그.(티스토리), “[알고리즘] 알고리즘의 종류와 개념”, https://okiidokii.tistory.com/190, 2021.03.28

profile
최선을 다하는 프로그래머

0개의 댓글