TIL) 유튜브 시청 후 정리 - 자료구조와 알고리즘 그리고 코딩테스트?

molayang·2021년 4월 27일
0

TIL

목록 보기
1/1

TIL) 유튜브 시청 후 정리 - 자료구조와 알고리즘 그리고 코딩테스트?
작성일 : 2021-04-26
출처 - Youtube 드림코딩 by 엘리 https://www.youtube.com/channel/UC_4u-bXaba7yrRz_6x6kb_w

자료구조와 알고리즘, 코딩테스트는 필수일까?
-> 자료구조와 알고리즘은 개발자라면 기본적으로 알아야 하는 지식이다.

알고리즘과 자료구조를 공부해야하는 이유

기업에 들어가기 위해, 코딩 테스트를 통과하기 위해 문제를 푸는 연습을 하는것이 아니다. 자료구조와 알고리즘은 개발자가 만들고자 하는 프로그램을 더 멋지고 효율적으로 만들어 줄 수 있는 좋은 수단이다.
면접에서 코딩 테스트를 보는 이유는 "알고리즘을 작성한 다음 질의응답을 통해 해당 면접자의 자료구조, 알고리즘에 대한 이해도와 시간과 공간 복잡도에 대한 이해도를 파악하기 위해서"이다.

면접자가 Map이라는 자료구조를 사용했을 때, 면접관이 Set이 아닌 Map을 쓴 이유가 있는지, Map과 Set의 차이가 뭔지 물어볼 수 있다.

알고리즘, 자료구조를 공부할 때의 포인트

자료구조

서비스나 어플리케이션에서 필요한 데이터를 메모리에 어떻게 구조적으로 잘
정리해서 담아두고 관리하고 최종적으로 가장 효율적인 방식으로 필요한 데이터에
빠르게 접근하고 수정 삽입 삭제할 수 있는지 어떤 자료구조를 사용하는지에 따라 효율성이 달라진다.

배열Array, 단일 연결 리스트List, 이중 연결 리스트List, 스택Stack, 해쉬 테이블Hash Table 등 다양한 자료구조가 있다.

  • Order : 자료 구조 안에 있는 데이터들의 순서가 보장이 되는지
  • Unique : 중복된 데이터가 들어갈 수 있는지
  • Search : 검색할 때 얼마나 효율적인지
  • Modification : 우리가 원하는 기능에 따라서 수정할 때 얼마나 효율적인지

    알고리즘

    제한된 공간과 시간 안에서 데이터를 어떻게 처리할 것인지를 정해놓은 로직
    주어진 인풋으로 정의된 계산을 수행한 다음 아웃풋(결과값)을 내놓는 것

    좋은 알고리즘이란?
    제공된 데이터를 정말 작은 공간과 빠른 시간 안에서 효율적으로 처리할 수 있는 것(Efficient Data processing)

  • **Big O** : 동일한 알고리즘의 로직으로 인풋의 사이즈가 점점 커질수록 시간이 얼마나 더 많이 걸리는지를 정의한 시간 복잡도를 표기할 수 잇는 방법. 이렇게 알고리즘은 주어진 데이터를 검색하거나 정렬 또는 총점을 구하는 등의 다양한 계산을 할 수 있는것을 말한다.
  • Input Size : 인풋의 사이즈가 Big O가 어떻게 변화하는지
  • Space & Time : 공간과 시간의 복잡도는 어떤지
  • Data Structure : 어떤 자료 구조를 이옹해서 이 알고리즘을 쓰는게 좋은지

    자료구조와 알고리즘은 개발자가 만들고자 하는 프로그램을 더 멋지고 효율적으로 만들어 줄 수 있는 좋은 수단이다.

    • 추천 도서 : Cracking the coding interview(6th edition.)
  • profile
    한 걸음씩 꾸준히

    0개의 댓글