[F-Lab 모각코 챌린지-26일차] - 알고리즘

Big One·2023년 6월 5일
0

F-Lab

목록 보기
1/69

선형탐색(Searchlinear)

선형 탐색은 n개의 배열에서 하나씩 조회하여 조건과 맞는지 확인하는 것이다.
선형탐색은 순서가 무작위인 정렬되지 않은 데이터일 경우 최적의 탐색 조건이다.
시간복잡도는 O(n)이다.

구현코드

배열에 해당 아이디가 존재하는지 판별하기
-> 입력: 배열, 아이디
-> 출력: 존재하면 index 반환, 존재하지 않으면 false

function SearchLinear(arr, id){
	for(let i = 0; i < arr.length; i++){
    	if(arr[i] === id) return i;
    }
    return false;
}

이진탐색(SearchBinary)

이진 탐색은 배열안에 요소들이 순서대로 정렬되어 있어야 한다. 정렬 안 되어있으면 못 씀 ..!
이진 탐색은 배열 길이의 반을 중간지점으로 지정하고 비교하고자 하는 값에따라 중간지점을 시작 지점 or 종료 지점으로 설정한다. 찾는 값이 나올때 까지 이 과정을 반복한다.
시간복잡도는 O(logn)이다.

구현 코드

배열에 해당 숫자가 존재하는지 판별한다.
-> 입력: 배열, 숫자
-> 출력: 존재하면 index 반환, 존재하지 않으면 false

function SearchBinary(arr, val){
	let start = 0;
    let end = arr.length-1;
    if(arr[start] === val) return start;
    if(arr[end] === val) return end;
    
    while(start < end){
    	let middle = Math.floor((start + end) / 2);
        if(arr[middle] === val) return middle;
        if(arr[middle] < val){
        	start = middle;
        }else{
        	end = middle;
        }
    }
	return false;
}

음 .. 일단 이 코드는 문제가 있는데 ... 배열에 없는 숫자를 val로 입력하게 되면 무한반복되어 false가 나오지 않는다 .. 이유는 마지막쯤에 start, middle 같고 end보다 하나작기때문에 무한 반복이 되는데 ... 이거는 뒤에 강의에서 나오니 좀 더 살펴봐야겠다.
일단! 중요한건 반씩 잘라서 버려버리니까 정렬된 배열에서는 선형 검색보다 찾는 속도가 훨씬 빨라진다.

lighthouse

구글에서 개발한 웹페이지 성능 , 품질 개선할 수 있는 도구이고 지표를 나타내줌!

Lighthouse로 확인할 수 있는 지표

First Contentful Paint(FCP)

사용자가 특정 웹 페이지로 이동했을 때, 브라우저가 첫 번째 DOM의 콘텐츠를 렌더링하는 데 걸리는 시간을 나타낸다.

First Meaningful Paint(FMP)

사용자가 페이지를 불러오기 시작하면서 스크롤을 내리지 않은 채 제일 먼저 볼 수 있는 영역에 존재하는 주요한 콘텐츠를 렌더링하는 데 걸리는 시간
Lighthouse 버전 6.0 이후로 사용되지 않는다. (작은 차이에도 매우 민감하게 측정되어 일관성 없는 결과를 초래하였기 때문이다.)

Speed Index

웹 페이지를 불러올 때, 콘텐츠가 시각적으로 표시되는 데까지 걸리는 시간

First CPU Idle

웹 페이지가 최소한으로 상호작용할 수 있는 상태가 될 때까지 걸리는 시간
Lighthouse 버전 6.0 이후로 사용되지 않는다. (Time To Interactive와 측정 기준이 유사했지만 의미 있는 결과값을 보이지 못했다.)

Time To Interactive

웹 페이지가 완전히 상호작용할 수 있는 상태가 될 때까지 걸리는 시간

Max Potential First Input Delay(FID)

사용자가 웹 사이트와 처음 상호작용(버튼 클릭)할 때부터 브라우저가 실제로 해당 상호작용에 응답할 수 있을 때까지 걸리는 가장 긴 시간
(즉, 최악의 경우를 측정)

Total Blocking Time(TBT)

웹 페이지가 사용자 입력에 응답하지 못하도록 차단된 총 시간
= 로딩 중 메인 스레드가 긴 시간동안 중단되어 응답을 받을 수 없을 정도로 걸린 시간

Largest Contentful Paint(LCP)

뷰포트에서 가장 큰 콘텐츠 요소가 화면에 렌더링 될 때까지 걸리는 시간

profile
이번생은 개발자

0개의 댓글