프로그래밍 언어를 사용한다면 기본적으로 알고 있어야하는 지식: 자료구조와 알고리즘
프로그래밍 언어란 다양한 결과값을 만들기 위해 여러가지 명령어들을 모아놓은 집합, 컴퓨터 프로그래밍에서 어떠한 알고리즘을 구현하기 위해 사용하는 언어를 일컬음(HTML과 CSS은 해당X).
현업에서는 언어sk 프레임워크, 라이브러리에서 잘 만들어진 기능을 가져와 만들고자 하는 기능을 가장 적합하고 효과적으로 가져와 사용하는 경우가 대부분
얼마나 정확하고 효율적으로 코드를 작성하는가
작성한 알고리즘을 통한 질의응답으로 자료구조와 알고리즘 및 시간과 공간 복잡도에 대한 이해도 확인
알고리즘 작성 후 알고리즘 선택 이유와 장단점, 다른 알고리즘과의 차이 등에 대한 의견을 나누며 진행
서비스나 어플리케이션에서 필요한 데이터를 메모리에 어떻게 구조적으로 잘 정리해 담고 관리하고, 최종적으로 가장 효율적인 방식으로 필요한 데이터에 빠르게 접근해 필요한 수정, 삽입, 삭제를 할 수 있도록 설계
서비스에서 클라이언트에게 데이터를 제공하거나 어플리케이션에서 사용자에게 필요한 데이터를 보요주거나 수정할 때 효율적으로 이를 사용하기 위해서는 기능에 적합한 알맞은 자료구조를 사용하는 것이 중요함
종류 - 배열, 단일 연결 리스트, 이중 연결 리스트, 스택, 해쉬 테이블 등 다양함
공부 포인트 - 자료구조안의 데이터 순서가 보장되는지, 중복된 데이터가 들어갈 수 있는지, 검색할 때 얼마나 효율적인지, 원하는 기능에 따라 수정할 때 얼마나 효율적인지 위주로 학습
제한된 공간과 시간 안에서 데이터를 어떻게 처리할 것인지를 정해놓은 로직으로 주어진 인풋으로 정의된 계산을 수행한 다음에 아웃풋 결과값을 내는 것
동일한 알고리즘의 로직인 Big O를 통해 인풋의 사이즈가 커질수록, 시간이 얼마나 더 많이 걸리느냐를 정의해 시간 복잡도를 표기하는 방법 존재
주어진 데이터를 검색하거나 정렬 또는 총점 등 다양한 계산
제공된 데이터를 정말 작은 공간과 빠른 시간 안에 효율적으로 처리하는 알고리즘이 베스트
공부 포인트 - 인풋 사이즈가 커질수록 BigO가 어떻게 변화하는지, 공간과 시간의 복잡도는 어떤지, 알고리즘마다 어떤 자료 구조를 이용하는게 좋을지
추천 도서 - overview_concept.md in local