코딩테스트란?
주어진 시간안에 알고리즘 문제를 푸는 것
알고리즘 문제
미니 문제 >> 필요한 로직 >> 개념과 문제해결능력 >> 문제 풀이
자료구조와 알고리즘 필수?
프로그래밍 언어로 코드를 작성하는 개발자라면 기본적으로 알고 있어야 되는 지식이다.
HTML : mark up language
CSS : style sheet language
자료구조와 알고리즘에 대해 얼마나 이해하고 있고 시간과 공간복잡도에 대한 이해를 하기 위해서
취직 이직을 위해 푸는 것이 아닌
만들고자 하는 프로그램을 효율적으로 만들어 줄 수 있는 수단
현업에선 문제를 푸는 일은 거의 없다.
자료구조란?
서비스나 어플리케이션에서 필요한 데이터를 메모리에 구조적으로 잘 정리해서 보관, 관리하고 최종적으로 가장 효율적인 방식으로 필요한 데이터에 빠르게 접근하고 수정 삽입 삭제를 할 수 있도록 도와주는 것
어떤 자료구조를 쓰느냐에 따라서 사용자가 원하는 기능을 수행하는데 0.2초 혹은 2초가 걸릴수 있다.
배열(Array)
단일 연결리스트, 이중 연결 리스트(List)
스택(Stack)
해쉬 테이블(Hash table)
데이터들의 순서가 보장이 되는지
중복된 데이터가 들어갈 수 있는지
검색할 때 얼마나 효율적인지
원하는 기능에 따라서 수정할 때 얼마나 효율적인지
알고리즘이란?
제한된 공간과 시간안에서 데이터를 어떻게 처리할 것인지를 정해놓은 로직
input -> output
Big O : 동일한 알고리즘의 로직으로 인풋의 사이즈가 점점 커질수록, 시간이 얼마나 더 많이 걸리느냐를 정의한 시간 복잡도를 나타내는 표기할 수 있는 방법
input의 사이즈가 커질수록 Big O가 어떻게 변화하는지
공간과 시간의 복잡도는 어떤지
어떤 자료 구조를 이용해서 이 알고리즘을 쓰는게 좋은지
이 자료 구조는 어느 상황에 쓰이는 것이 좋고 또 어떤 식의 API가 들어 있는지를 보면서 공부할 것
코딩테스트를 잘해야 개발을 잘하는가? X
문제를 푸는 시간은 중요하지 않다.
문제를 풀 수 있는가 없는가 의 차이
즉, 해결해나가는 과정이 중요하다.