우리가 흔히 취직이나 이직을 위해서 푸는 이 코딩 테스트 문제푸는 연습으로 오해하시는 경우가 있는데요.
이것은 마치 우리가 수학에 대한 기본 개념, 원리, 공식에 대한 공부가 전혀 없이
수학 실적 문제집을 사서 문제 푸는 연습을 하는 것이랑 똑같습니다.
현업에서 프로젝트를 할때는, 이런 코딩 테스트 있는 문제를 푸는 일은 거의 없습니다.
대부분은 언어나 프레임워크나 라이브러리에서 이미 잘 만들어진 객체를 가져와서
우리가 만들고자 하는 기능에 맞게 가장 적합하고 효과적인 아이들을 쏙 가져와서 쓰는 경우가 대부분
자료 구조는 서비스나 어플리케이션에서 필요한 데이터를 메모리에 어떻게 구조적으로 잘 정리해서 담아두고
관리하고 최종적으로 가장 효율적인 방식으로 필요한 데이터에 빠르게 접근하고
필요한 수정 삽입 삭제할 수 있도록 서비스에서 클라이언트에게 데이터를 제공하거나
어플리케이션에서 사용자에게 필요한 데이터를 보여 주거나 수정할 때
기능에 적합한 알맞는 적재적소에 맞는 자료구조를 쓰는 것이 정말 중요합니다.
기능 수행시간이 2초걸릴걸 1초로 줄일 수도있지~
자료 구조 안에 있는 데이터들의 순서가 보장이 되는지
우리가 원하는 기능에 따라서 수정할 때 얼마나 효율적인지 이런 것들을 위주로 공부하시면 너무 좋을 것 같습니다.
알고리즘은 제한된 공간과 시간 안에서 데이터를 어떻게 처리할 것인지를 정해놓은 로직이다.
즉 주어진 인풋으로 정의된 계산을 수행한 다음에 아웃풋 결과값을 내는 것을 말합니다
그리고 알고리즘을 공부 하시다보면 Big O 를 떼 놓을 수가 없는데요
Big O 는 동일한 알고리즘의 로직으로 인풋의 사이즈가 점점 커질수록
시간이 얼마나 더 많이 걸리느냐를 정의한 시간 복잡도를 나타내는, 표기할 수 있는 방법입니다
제일 좋은 알고리즘은요 제공된 데이터를 정말 작은 공간과 빠른 시간 안에 서 효율적으로 처리할 수 있는 것이 가장 좋다.
- 자료구조와 알고리즘은 프로그램을 더 멋지고 효율적으로 만들어 줄 수 있는 좋은 수단
- ( 자료구조 + 알고리즘 = 프로그램)
- 자료구조 공부시 주요 포인트
- 자료구조 내 데이터들의 순서가 보장이 되는지
- 중복된 데이터가 들어갈 수 있는지
- 검색할 때 얼마나 효율적인지
- 수정에 얼마나 효율적인지
- 알고리즘 공부시 주요포인트
- 시간복잡도 ( 시간이 얼마나 걸리나)
- 공간복잡도 (누수 되는 메모리 없이 기능에 맞게 최적화)