메모하기
디버깅은 필수
익숙해지기
좋은 코드란?
가지치기를 했는가?
자바스크립트를 잘 이용했는가?
일관성을 유지했는가?
메모리를 효율적으로 사용하여 빠르고 안정적으로 데이터를 처리하는 것이 궁극적인 목표로 상황에 따라 유용하게 사용될 수 있도록 특정 구조를 이루고 있다.
문제 상황에 맞지 않는 자료구조를 사용하게 되면 느리고 불안정적으로 데이터를 처리할 수도있다.
특정 문제를 효율적이고 빠르게 해결하는 것이 궁극적인 목표로 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것을 말한다.
단순 구조 : 정수, 실수, 문자열, 논리
선형구조 : 배열, 연결 리스트, 스택, 큐등 한 원소 뒤에 하나의 원소만이 존재하는 형태. 자료들이 선형으로 나열되어 있는 구조를 가진다.
비선형구조 : 그래프, 트리등 원소 간 다대다 관계를 가지는 구조로 계층적 구조나 망형 구조를 표현하기에 적절하다. 비선형 구조에 해당되는 자료구조는 트리와 그래프 등이 있다.
프로그램의 성능을 알기 위해서 고려할 것
입력으로 들어오는 데이터의 크기, 하드웨어의 성능, 운영체제의 성능, 컴파일러 최적화 등등..
고려할것들이 너무 많기 때문에 프로그램의 성능을 정확히 파악하는건 불가능하다.
따라서 대략적인 성능을 비교하기위해 만들어진것이 빅오표기법이다.
시간복잡도를 나타내기위한것들중 하나이다.
위 그래프는 빅오표기법의 상대적인 성능을 시각화한 자료
big O 에 쓰인 n이 전부 같은 값이라 가정할때
O(1) < O(log n) < O(n) < O(nlog n) < O(n^2) < O(2^n) < O(n!)
O(1) : 상수 실행 시간
O(log n) : 로그 시간
O(n) : 선형 시간
O(n log n) : 선형 로그 시간
O(n^c) : 다항식 시간
O(c^n) : 지수 시간
O(n!) : 팩토리얼 시간
빅오표기법 계수 법칙 n이 무한에 가까울 수록 k의 크기는 의미가 없다. 때문에 생략하여 표기한다. 물론 k가 클수록 성능에는 영향이 있을 수 있다.
Date 객체를 이용
시작시간을 구하고 로직을 돌린다음에 끝시간에 시작시간을 빼준다.
인강 출처 : 프로그래머스