백엔드33 백엔드 신입 개발자가 쌓아야 하는 역량은? 신입 백엔드 개발자에게 필요한 것 지난 1개월 동안 제로베이스를 통해 알고리즘/자료구조를 공부했었고 코딩테스트를 경험했다. 이 시간동안 내가 느낀 백엔드 개발자로서 쌓아야 하는 역량이란 무엇인지 고민을 해보았는데 가장 중요한 것은 '자기주도적 학습'과 '문제 해결을 위한 노력' 이다. ❗ 효율적인 문제 해결 능력을 위한 자기주도적 학습 공부를 하면 할수록 코드에 대한 이해력과 전체적인 흐름을 파악하는 능력이 중요하다고 생각한다. 코딩테스트를 통해 내가 현재 수준으로 풀 수 있는 문제인지 아니면 풀 수 없는 문제인지 파악하며 현시점에서 내가 가지고 있는 역량이 어느정도 인지 파악할 수 있었다. 이를 통해 내가 부족한 지식이나 피지컬 적인면에서 어떤 부분이 부족하고 충분한지를 알면 어떤 부분을 학습해야 할지.. 2023. 5. 12. 자료구조 [Heap] Heap 최댓값과 최소값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전이진트리(complete binary tree)의 일종 데이터들이 우선순위를 가지고 있어서 우선순위가 높은 데이터가 먼저 나간다. 최댓값과 최소값을 빠르게 찾아 내도록 만들어진 반정렬 상태의 자료구조를 가진다. 힙 트리는 중복된 값을 허용한다. (이진 탐색 트리는 중복값을 허용하지 않는다!) 완전이진트리(complete binary tree) 완전이진트리는 마지막 레벨을 제외 하고 모든 레벨이 완전히 채워져 있음 마지막 레벨은 꽉 차 있지 않아도 되지만 노드가 왼쪽에서 오른쪽으로 채워져야한다. (노드 -> 노드) 반정렬 상태 반정렬 상태라는 것은 트리 구조를 배열에 저장한 것이다. 배열로만 보았을 때에는 완전히 정렬된 상태로 보이지는.. 2023. 4. 17. 자료구조 [Linked List] 연결리스트(Linked List) 연결리스트(Linked List) 는 '노드'라는 객체로 이루어져 있는데 각 노드가 데이터와 포인터를 가지고 한줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조가 연결리스트(Linked List)이다. 위 사진처럼 각각의 노드들은 다음 노드의 주소를 값으로 가지고 있는 포인터를 가지고있다. 또한 노드는 연속된 공간에 저장되어 있는 것이 아니라 메모리의 여러 부분에서 분포하여 있다. 노드의 다음주소가 NULL이라면 마지막 노드를 가르킨다. 연결리스트의 장점으로는 삭제나 추가의 시간복잡도가 O(1) 시간에 가능하다. 배열을 보면 5개의 데이터를 가지고있는 배열이 있다고 가정한다면 중간에 하나의 데이터를 삭제하면 나머지 모든 데이터들이 재배치 되어야 한다. 추가 또한 마.. 2023. 4. 16. 자료구조 [HashMap] 해시맵(HashMap) Map 형태의 자료구조는 키(Key) : 값(Value)의 형태의 두개가 한쌍으로 이루어진 데이터를 저장하는 자료구조이다. JAVA에서의 Map은 인터페이스 이며 Map을 구현한 객체 중 하나이자 Map자료구조중 기본이되는 것이 HashMap이다. (사과 : 2000, 바나나 : 5000) Key는 set과 마찬가지로 중복이 불가능하고 유일해야하며 값은 중복 상관이 없이 작성할 수 있으며 이 key와 value를 매핑하기 위해서 해시라는 것을 사용한다. HashMap은 보조 해시 함수(Additional Hash Function)을 사용하기 때문에 해시충돌(Hash Collision)이 상대적으로 덜 발생할 수있어 성능상의 이점을 가질 수 있다. 또한 효율적인 검색을 위해 사용되며.. 2023. 4. 13. 이전 1 2 3 4 ··· 9 다음