728x90
[JavaScript] let, var, const / promise / 동기, 비동기KIMJAVAN1. let, var, const 차이var스코프: 함수 스코프 (함수 내에서만 유효).재선언: 동일한 이름으로 다시 선언 가능.초기화: 선언 전에 값을 참조하면 undefined (호이스팅됨).특징: 블록 스코프를 무시하고 재선언이 가능하여 예기치 않은 버그가 발생할 수 있음.var x = 10;if (true) { var x = 20; // 같은 변수를 덮어씀}console.log(x); // 20let스코프: 블록 스코프 (중괄호 {} 내에서만 유효).재선언: 동일한 이름으로 다시 선언 불가능.초기화: 선언 전에 참조하면 에러(ReferenceError).특징: 재할당은 가능하지만 재선언은 불가.let y = 10;if (true) { let y = 20; // 별도의 스코프에서 선언 cons..- 2025-01-16 15:12:14
[JavaScript] for...of / for...in 문 차이KIMJAVAN사용 방법순회 대상키/인덱스 다루기값 다루기for...of배열, 문자열, Set 등❌✅for...in객체, 배열(키 순회)✅ (키/인덱스)간접적으로 가능Object.entries() + for...of객체✅ (키와 값)✅ (키와 값)Array.entries() + for...of배열✅ (인덱스와 값)✅ (값)- 2025-01-13 17:58:48
[JavaScript] 퀵 정렬KIMJAVAN퀵 정렬 (Quick Sort)퀵 정렬은 **분할 정복 알고리즘 (Divide and Conquer)**의 일종으로, 배열을 **"피벗"**을 기준으로 나누어 정렬하는 방식입니다.다양한 효율적인 정렬 알고리즘 중에서 매우 빠른 성능을 자랑하며, 평균 시간 복잡도는 **O(nlogn)O(n \log n)O(nlogn)**입니다.동작 원리피벗 선택 (Pivot Selection):배열에서 임의의 요소를 피벗(pivot)으로 선택합니다.분할 (Partitioning):피벗을 기준으로, 피벗보다 작은 값은 왼쪽, 큰 값은 오른쪽으로 배치하여 배열을 두 개의 부분으로 나눕니다.재귀적 정렬 (Recursion):나눈 두 부분에 대해서 각각 퀵 정렬을 다시 수행합니다. 이 과정을 배열이 정렬될 때까지 반복합니다.병..- 2025-01-11 18:19:39
- [JavaScript] 합병정렬KIMJAVAN합병 정렬 (Merge Sort)합병 정렬은 **분할 정복 알고리즘 (Divide and Conquer)**의 일종으로, 큰 문제를 작은 문제로 나눈 후 그 결과를 합쳐서 해결하는 방식으로 동작합니다. 이 알고리즘은 매우 효율적이며, 시간 복잡도가 **최악의 경우에도 O(nlogn)O(n \log n)O(nlogn)**입니다.동작 원리분할 (Divide):배열을 반으로 나눕니다. 이 과정을 배열의 크기가 1이 될 때까지 재귀적으로 반복합니다.정복 (Conquer):배열이 하나의 요소만 남을 때까지 분할한 후, 각 배열을 정렬합니다.병합 (Merge):두 개의 정렬된 배열을 하나의 정렬된 배열로 합칩니다.이때, 두 배열을 비교하면서 더 작은 값을 차례대로 새로운 배열에 넣습니다.장점과 단점장점:안정적인 ..
- 2025-01-11 18:07:14
- [JavaScript] 삽입정렬KIMJAVAN삽입 정렬 (Insertion Sort)삽입 정렬은 각 요소를 적절한 위치에 삽입하며 정렬하는 방식으로 동작하는 간단한 정렬 알고리즘입니다.카드 게임에서 손에 들고 있는 카드를 정렬하는 방식과 비슷하다고 생각하면 됩니다.동작 원리배열의 두 번째 요소부터 시작합니다.현재 요소를 이전 요소들과 비교하여, 적절한 위치에 삽입합니다.이 과정을 배열 끝까지 반복하여 정렬을 완성합니다.장단점장점:데이터가 거의 정렬되어 있는 경우 매우 빠르며, 최선의 경우 O(n)O(n)O(n)입니다.추가 메모리를 사용하지 않는 **제자리 정렬 (In-Place Sort)**입니다.단점:데이터가 정렬되어 있지 않을 때는 비교와 이동이 많아져 O(n2)O(n^2)O(n2)의 성능을 보입니다.적합한 경우:데이터 크기가 작거나, 이미 정..
- 2025-01-11 18:03:39
- [JavaScript] 선택정렬KIMJAVAN선택 정렬 (Selection Sort)선택 정렬은 가장 작은 값을 선택해 배열의 맨 앞에 놓는 과정을 반복하며 배열을 정렬하는 간단한 알고리즘입니다."최솟값을 찾아서 제자리로 옮긴다"는 점에서 이름이 유래되었습니다.동작 원리최솟값 찾기: 배열에서 아직 정렬되지 않은 부분의 최솟값을 찾습니다.교환: 찾은 최솟값을 현재 정렬 위치의 첫 요소와 교환합니다.반복: 배열이 정렬될 때까지 1~2 단계를 반복합니다.장단점장점: 구현이 매우 쉽다. 데이터 이동 횟수가 적어, 교환이 적은 환경에 적합하다.단점: 시간 복잡도가 비효율적이다 (O(n2)O(n^2)O(n2)).적합한 경우: 데이터 양이 적거나 교환 비용이 높은 경우.예시 코드 (JavaScript로 구현)1. 오름차순 선택 정렬const selectionS..
- 2025-01-11 17:32:09
- [JavaScript] 버블정렬KIMJAVAN버블 정렬 (Bubble Sort)버블 정렬은 가장 간단한 정렬 알고리즘 중 하나로, 두 인접한 요소를 비교하여 크기 순서에 맞게 반복적으로 교환하는 방식으로 동작합니다. 정렬이 끝날 때까지 가장 큰 값(또는 작은 값)이 거품처럼 끝으로 이동하기 때문에 버블 정렬이라 부릅니다.동작 원리배열의 처음부터 시작해서 두 개의 인접한 요소를 비교합니다.두 요소가 잘못된 순서(예: 오름차순에서 앞 값이 더 크거나, 내림차순에서 더 작음)라면 교환합니다.배열의 끝까지 이 과정을 반복하면 가장 큰 값이 배열의 마지막으로 이동합니다.이 과정을 배열의 길이만큼 반복하면서 정렬을 완성합니다.장단점장점: 구현이 매우 쉽다.단점: 시간 복잡도가 비효율적이다 (O(n2)O(n^2)O(n2)).적합한 경우: 데이터가 거의 정렬되어..
- 2025-01-11 17:28:19
- [JavaScript] 오름/내림차순정렬KIMJAVANconst an = [1, 4, 6, 5, 1, 6];const sort = (array) => { return array.slice().sort((a, b) => a - b); // 오름차순 정렬};console.log(sort(an)); // [1, 1, 4, 5, 6, 6]console.log(an); // [1, 4, 6, 5, 1, 6]const an = [1, 4, 6, 5, 1, 6];const sort = (array) => { return array.slice().sort((a, b) => b - a); // 내림차순 정렬};console.log(sort(an)); // [6, 6, 5, 4, 1, 1]console.log(an); // [1, 4, 6, 5, 1..
- 2025-01-11 17:22:56
- [JavaScript] bigOKIMJAVAN1. 계수 법칙f(n)f(n)f(n)이 O(g(n))O(g(n))O(g(n))라면, k⋅f(n)k \cdot f(n)k⋅f(n)도 O(g(n))O(g(n))O(g(n))이다.쉽게 말하면: 상수를 곱해도 시간복잡도는 변하지 않는다!비유:만약 어떤 사람이 n2n^2n2만큼의 일을 한다고 하면, 그 사람이 2배 빠르거나 3배 느리더라도 결국 하는 일의 성장 속도는 여전히 n2n^2n2이다.2. 합의 법칙f(n)f(n)f(n)이 O(h(n))O(h(n))O(h(n))이고 g(n)g(n)g(n)이 O(p(n))O(p(n))O(p(n))라면, f(n)+g(n)f(n) + g(n)f(n)+g(n)은 O(max(h(n),p(n)))O(\max(h(n), p(n)))O(max(h(n),p(n)))이다.쉽게 말하면: 두..
- 2025-01-11 17:05:43
- [JavaScript] 알고리즘 공부기록 : 팩토리얼 / 법칙KIMJAVANfunction fact(n) { return n > 0 ? n * fact(n - 1) : 1;}console.log(fact(10)); 계수법칙 / 합의법칙 / 다항법칙 / 곱의 법칙 / 전이법칙 1. 계수법칙(상수 k>0) f(n)이 O(g(n)) 이면 kf(n) 은 O(g(n)) 이다. gpt 설명 :: 질문 :: (상수 k>0) f(n)이 O(g(n)) 이면 kf(n) 은 O(g(n)) 이다. 시간복잡도에서 나온것 중 하나인데 kf(n)이면 O(g(n*k)) 이렇게되어야할거같은데아님?답 ::계수법칙이란, 어떤 함수 f(n)f(n)f(n)가 O(g(n))O(g(n))O(g(n))라면 kf(n)kf(n)kf(n) (여기서 k>0k > 0k>0)도 O(g(n))O(g(n))O(g(n))에 속한..
- 2025-01-11 16:36:30
- 프론트엔드 면접질문(기타)KIMJAVAN1. 데이터 구조데이터 구조란 무엇인가요?답: 데이터를 효율적으로 저장, 관리, 처리하기 위한 체계적인 방식입니다. 예: 배열, 리스트, 스택, 큐, 트리, 그래프.스택과 큐의 차이점은?답:스택: LIFO(Last In, First Out) 방식. 마지막에 들어온 데이터가 먼저 나감.예: 브라우저의 뒤로 가기 기능.큐: FIFO(First In, First Out) 방식. 먼저 들어온 데이터가 먼저 나감.예: 프린터 작업 대기열.해시맵(HashMap)이란 무엇인가요?답: 키-값 쌍으로 데이터를 저장하는 데이터 구조로, 빠른 데이터 검색이 가능합니다.시간 복잡도는 일반적으로 O(1). 예: 자바스크립트의 Map 객체.트리와 그래프의 차이점은?답:트리: 계층적 구조, 루트 노드에서 시작하며 사이클이 없음.예..
- 2025-01-11 01:27:13
- 프론트엔드 면접질문(기술2)KIMJAVAN배포 관련 질문프론트엔드 애플리케이션 배포 과정은 어떻게 진행되나요?답:코드 작성 및 빌드: npm run build로 최적화된 파일 생성.정적 파일을 호스팅 서비스에 업로드: 예) Netlify, Vercel, AWS S3, Firebase.CDN(Content Delivery Network) 사용: 정적 파일을 글로벌하게 제공.배포 후 테스트: 브라우저에서 확인 및 디버깅.CI/CD 파이프라인 설정으로 자동화: 예) GitHub Actions, Jenkins.CDN이란 무엇이며, 어떻게 사용하나요?답: CDN은 콘텐츠 전송 네트워크(Content Delivery Network)로, 사용자와 가까운 서버에서 정적 리소스를 제공하여 로드 시간을 단축합니다.예: CSS/JS 파일을 AWS CloudFron..
- 2025-01-11 01:07:48
728x90
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)