데이터 구조 + 알고리즘 소개 [1부]
데이터 구조란 무엇입니까? 음, 컴퓨터/프로그램에서 효과적으로 사용할 수 있도록 데이터를 구성하는 특별한 방법입니다. 그렇다면 알고리즘이란 무엇인가? 입력 인스턴스(문제)를 입력으로 취하고 문제(인스턴스)에 대한 출력을 생성하는 단계별 절차입니다.
경고: 코딩 또는 데이터 구조/알고리즘 질문을 받게 될 것이라고 보장할 수는 없지만 실제 인터뷰에서 예상할 수 있는 질문 종류에 대한 아이디어를 제공할 것입니다.
데이터 구조 및 알고리즘에 대한 경험이 전혀 없는 경우 인터뷰 케이크, Udemy Colt Steele 또는 Freecodecamp를 방문하여 기본 사항을 숙지해야 합니다.
내 의도는 이 시리즈에서 다음을 다루는 것입니다.
빅오 🔗
어레이🔗
연결된 목록🔗
스택 및 대기열🔗
해시🔗
분류🔗
트리(이진 검색 트리)🔗
그래프🔗
시스템 설계(추가)🔗
참고: 챌린지는 다음과 같이 표시됩니다 => 예: Big-O(제목) [난이도]
음... 잠깐만요, Alg의 종류는요?
어 그래. 잊어버리기 전에 모든 알고리즘은 다음 패러다임 중 하나로 분류할 수 있습니다.
Brute Force 알고리즘 - 가능한 모든 솔루션을 확인하고 최상의 솔루션을 선택합니다.
동적 프로그래밍 Alg. - 이전의 모든 솔루션을 기반으로 문제를 해결합니다.
Greedy - 미래의 결과에 관계없이 현재 최선의 솔루션을 선택합니다.
Divide & Conquer - 문제를 더 작은 문제 집합으로 나누어 해결하고 마지막에 전체 솔루션을 얻습니다.
첫 게스트 Big O를 소개합니다.
빅 오
코드의 확장성을 결정할 수 있으며, 이는 코드의 효율성을 측정하는 방법을 나타냅니다. 코드의 성능을 정확히 어떻게 계산할 수 있습니까? 런타임 속도인가요? 복잡성/단순성? 컴퓨터의 차이에 관계없이 확장성을 어떻게 다시 계산합니까? 우리는 입력 크기가 얼마나 큰지, 이것이 함수나 알고리즘을 얼마나 느리게 하는지(알고리즘 효율성) 측정할 수 있습니다.
요소(입력)의 수가 증가함에 따라 얼마나 많은 작업을 수행해야 합니까?
선형 시간
const yoda = ['Baby Yoda']
const friends = ['Mandolorian', 'Luke', 'Leila', 'Clone A','Baby Yoda','Dark Vader']
const large = new Array(10000).fill('Baby Yoda')
const findBabyYoda = arr=> {
for(let i=0; i < arr.length; i++){
if(arr[i] === 'Baby Yoda'){
console.log('FOUND YODA!')
}
}
}
findBabyYoda(friends) // O(n) - Linear time
// The num of outputs increases proportionally with the num of inputs
일정한 시간
const pineapples = [0,1,2,3,4,5]
const logFirstsPineapples = pineapples => {
console.log(pineapples[0]) // O(1) - constant time
console.log(pineapples[1]) // 0(1) - constant time
}
logFirstsPineapples(pineapples) // O(2)
1- 아래 함수의 Big O는 무엇입니까? Solution
const firstChallenge => input => {
let a = 10;
a = 50 + 3;
for (let i = 0; i < input.length; i++) {
ramdomFunction();
let stranger = true;
a++;
}
return a;
}
2- 아래 함수의 Big O는 무엇입니까? Solution
function secondChallenge(input) {
let a = 5;
let b = 10;
let c = 50;
for (let i = 0; i < input; i++) {
let x = i + 1;
let y = i + 2;
let z = i + 3;
}
for (let j = 0; j < input; j++) {
let p = j * 2;
let q = j * 2;
}
let whoRu= "I don't know";
}
Big(O)를 조금 더 잘 만드는 데 도움이 되는 규칙:
최악의 경우:
자원
너 아직도 나와 함께 있니?
첫 번째 정류장을 마칠 수 있게 해주셔서 감사합니다. 오늘 본 내용은 매우 기본적인 것 같았지만 이것은 시작일 뿐이며 이 주제를 진행함에 따라 더욱 어려워질 것입니다. 이 주제와 관련하여 질문, 제안 또는 논의할 사항이 있으면 아래에 의견을 말하십시오.
댓글에서 뵙기를 바랍니다!
Reference
이 문제에 관하여(데이터 구조 + 알고리즘 소개 [1부]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/migben/intro-to-data-structures-algo-part-1-559o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)