본문 바로가기
반응형

코딩테스트131

[코딩 테스트] 9일차: 정렬 알고리즘 정렬 알고리즘정렬 알고리즘은 데이터를 일정한 순서로 정렬하는 알고리즘입니다. 정렬된 데이터는 검색, 분석 등의 작업에서 효율성을 높여줍니다. 여기서는 버블 정렬, 선택 정렬, 삽입 정렬, 병합 정렬, 퀵 정렬에 대해 알아보겠습니다.버블 정렬 (Bubble Sort)버블 정렬은 인접한 두 요소를 비교하여 정렬하는 가장 간단한 정렬 알고리즘 중 하나입니다. 시간 복잡도는 O(n^2)입니다.JavaScript에서의 버블 정렬 구현function bubbleSort(arr) { let n = arr.length; for (let i = 0; i arr[j + 1]) { // Swap let temp = arr[j]; arr[j] = arr[j + 1]; a.. 2024. 9. 9.
[코딩 테스트] 8일차: 해시 테이블 해시 테이블해시 테이블은 키-값 쌍을 저장하는 자료구조로, 빠른 검색, 삽입, 삭제 작업을 지원합니다. 해시 함수(hash function)를 사용하여 키를 해시 값으로 변환하고, 이 해시 값을 인덱스로 사용하여 배열에 값을 저장합니다.해시 테이블의 주요 개념해시 함수: 키를 해시 값으로 변환하는 함수해시 값: 해시 함수에 의해 생성된 값버킷: 해시 값에 대응하는 저장 공간충돌 해결: 동일한 해시 값을 가진 여러 키를 처리하는 방법충돌 해결 방법체이닝(Chaining): 각 버킷에 연결 리스트를 사용하여 충돌을 해결오픈 어드레싱(Open Addressing): 충돌이 발생하면 다른 빈 버킷을 찾아 값을 저장해시 테이블 구현체이닝을 이용한 해시 테이블 구현JavaScript에서의 체이닝을 이용한 해시 테이.. 2024. 9. 8.
[코딩 테스트] 7일차: 트리와 그래프 트리트리는 노드와 에지로 구성된 자료구조로, 계층적인 데이터를 표현하는 데 사용됩니다. 트리는 루트 노드를 가지고 있으며, 각 노드는 자식 노드를 가질 수 있습니다.트리의 주요 개념루트 노드: 트리의 시작 노드리프 노드: 자식 노드가 없는 노드간선(Edge): 노드를 연결하는 선깊이(Depth): 루트 노드에서 특정 노드까지의 경로 길이높이(Height): 루트 노드에서 리프 노드까지의 가장 긴 경로 길이트리 순회트리 순회 방법에는 전위 순회(Preorder), 중위 순회(Inorder), 후위 순회(Postorder)가 있습니다.전위 순회 (Preorder)현재 노드를 방문왼쪽 서브트리를 전위 순회오른쪽 서브트리를 전위 순회중위 순회 (Inorder)왼쪽 서브트리를 중위 순회현재 노드를 방문오른쪽 서브.. 2024. 9. 7.
[코딩 테스트] 6일차: 연결 리스트 연결 리스트연결 리스트는 각 노드가 데이터와 다음 노드를 가리키는 포인터를 가지고 있는 자료구조입니다. 배열과 달리 연결 리스트는 메모리상에서 연속적으로 저장되지 않습니다.단일 연결 리스트단일 연결 리스트는 각 노드가 다음 노드에 대한 포인터만을 가지고 있는 리스트입니다.JavaScript에서의 단일 연결 리스트 구현class Node { constructor(data) { this.data = data; this.next = null; }}class LinkedList { constructor() { this.head = null; } // 노드 추가 append(data) { let newNode = new Node(data); if (this.head === n.. 2024. 9. 6.
[코딩 테스트] 5일차: 스택과 큐 스택스택은 LIFO(Last In, First Out) 자료구조로, 가장 나중에 삽입된 데이터가 가장 먼저 삭제됩니다. 스택은 보통 함수 호출, 수식 계산, 문자열 역순 처리 등에서 사용됩니다.스택의 기본 연산push: 스택의 맨 위에 요소를 추가pop: 스택의 맨 위 요소를 제거하고 반환peek: 스택의 맨 위 요소를 반환 (제거하지 않음)isEmpty: 스택이 비어 있는지 확인JavaScript에서의 스택 구현class Stack { constructor() { this.items = []; } push(element) { this.items.push(element); } pop() { if (this.isEmpty()) { return "Underflow"; .. 2024. 9. 5.
[코딩 테스트] 4일차: 배열과 문자열 배열배열은 여러 값을 하나의 변수에 저장할 수 있는 데이터 구조입니다. 각 값은 인덱스를 사용하여 접근할 수 있습니다.배열 선언과 초기화JavaScript에서의 배열 선언과 초기화// 배열 선언let numbers = [1, 2, 3, 4, 5];// 배열 초기화let fruits = new Array("Apple", "Banana", "Cherry");console.log(numbers); // [1, 2, 3, 4, 5]console.log(fruits); // ["Apple", "Banana", "Cherry"] Python에서의 배열 선언과 초기화Python에서는 배열 대신 리스트를 사용합니다.# 리스트 선언 및 초기화numbers = [1, 2, 3, 4, 5]fruits = ["Apple", .. 2024. 9. 4.
[코딩 테스트] 3일차: 함수와 객체 함수함수는 재사용 가능한 코드 블록으로, 특정 작업을 수행하기 위해 작성됩니다. 함수를 사용하면 코드의 가독성과 재사용성을 높일 수 있습니다.함수 선언과 호출JavaScript에서의 함수 선언과 호출// 함수 선언function greet(name) { return "Hello, " + name + "!";}// 함수 호출let greeting = greet("Alice");console.log(greeting); // "Hello, Alice!"Python에서의 함수 선언과 호출# 함수 선언def greet(name): return "Hello, " + name + "!"# 함수 호출greeting = greet("Alice")print(greeting) # "Hello, Alice!"매개변수와.. 2024. 8. 3.
[코딩 테스트] 2일차: 조건문과 반복문 조건문조건문은 주어진 조건에 따라 코드의 실행 흐름을 제어하는 문법입니다. 조건문을 사용하여 특정 조건이 참일 때만 특정 코드 블록을 실행할 수 있습니다.if, else if, else 문if 문은 조건이 참일 때 특정 코드를 실행합니다. else if와 else 문은 추가 조건과 기본 조건을 처리하는 데 사용됩니다. JavaScript에서의 if, else if, else 문let num = 10;if (num > 10) { console.log("num은 10보다 큽니다.");} else if (num === 10) { console.log("num은 10입니다.");} else { console.log("num은 10보다 작습니다.");}Python에서의 if, else if, else 문nu.. 2024. 8. 2.
[코딩 테스트] 1일차: 변수와 데이터 타입 변수와 데이터 타입코딩 테스트에서 가장 기본이 되는 부분은 변수와 데이터 타입입니다. 변수는 데이터를 저장하는 공간이며, 데이터 타입은 변수에 저장되는 데이터의 종류를 의미합니다.변수 선언변수를 선언하는 방법은 사용하는 언어에 따라 다릅니다. 여기서는 JavaScript와 Python을 예로 들어 설명합니다.JavaScript에서의 변수 선언JavaScript에서는 var, let, const 키워드를 사용하여 변수를 선언합니다.var: 함수 스코프를 가지며, 선언하기 전에 사용할 수 있습니다(호이스팅).let: 블록 스코프를 가지며, 선언하기 전에 사용할 수 없습니다.const: 블록 스코프를 가지며, 선언과 동시에 초기화되어야 합니다. 이후 변경할 수 없습니다.var x = 5;let y = 10;c.. 2024. 8. 1.
[코딩 테스트] 18일차: 문자열 알고리즘 문자열 알고리즘문자열 알고리즘은 문자열을 처리하고 검색하는 데 사용됩니다. 이번 글에서는 문자열 검색 알고리즘인 KMP와 Rabin-Karp, 문자열 정렬, 그리고 다중 패턴 검색 알고리즘인 아호-코라식(Aho-Corasick)에 대해 알아보겠습니다.KMP 알고리즘 (Knuth-Morris-Pratt)KMP 알고리즘은 문자열 검색 알고리즘으로, 부분 일치를 이용하여 불필요한 비교를 줄여 검색 속도를 향상시킵니다. 예제: KMP 알고리즘 구현JavaScriptfunction kmpSearch(text, pattern) { const lps = buildLPSArray(pattern); let i = 0; // text index let j = 0; // pattern index while (i Py.. 2024. 6. 27.
반응형