자료구조 코드

1차 카테고리
자료구조
2차 카테고리
hash table
stack
queue
set
heap
생성 일시
2024/08/26 14:42
최종 편집 일시
2025/01/11 17:05
발행여부
published
더이상 구글링하기 귀찮다! py, js 왔다갔다하니 굉장히 헷갈림. 그래서 같이 정리해버림.
파이썬은 Ally의 자료를 참고해서 작성

1. 문자열

Python

# 문자열 선언 s = "abcdef" # 문자열 출력 print(s) # 문자열 연결 s1 = "Hello" s2 = "World" s3 = s1 + s2 print("연결된 문자열:", s3) # 문자열 길이 확인 print("문자열의 길이:", len(s)) print() # 특정 위치의 문자 접근 print("인덱스 1의 문자:", s[1]) print() # 문자열 자르기 print("자른 부분 문자열:", s[2:5]) # 특정 문자 또는 부분 문자열의 존재 여부 확인 print("abc" in "PPabcPPP") print("abc" in "PPAbcaPP")
Python
복사

JavaScript

// 문자열 선언 const s = "abcdef" // 문자열 출력 console.log(s) // 문자열 연결 const s1 = "Hello" const s2 = "World" const s3 = s1 + s2 console.log("연결된 문자열:", s3) // 문자열 길이 확인 console.log("문자열의 길이:", len(s)) // 특정 위치의 문자 접근 console.log("인덱스 1의 문자:", s[1]) // 문자열 자르기 console.log("자른 부분 문자열:", s.slice(2,5)) // 특정 문자 또는 부분 문자열의 존재 여부 확인 console.log("PPabcPPP".includes("abc")) console.log("PPAbcaPP".includes("abc"))
JavaScript
복사

2. 해시테이블

Python

# 해시테이블 선언 dt = {} # 특정 키에 대한 값 할당 dt["apple"] = 500 dt["banana"] = 1000 dt["cherry"] = 700 # 딕셔너리 출력 print("딕셔너리:", dt) # 특정 키의 값 조회 print("banana의 값:", dt["banana"]) # 특정 키의 값 삭제 del dt["cherry"] print("cherry 삭제 후 딕셔너리:", dt) # 딕셔너리의 크기 확인 print("딕셔너리의 크기:", len(dt)) # 특정 키의 존재 여부 확인 print("apple" in dt) print("pineapple" in dt) print(142 in dt)
Python
복사

JavaScript

// 해시테이블 선언 const map = new Map(); // 특정 키에 대한 값 할당 map.set('apple', 500); map.set('banana', 1000); map.set('cherry', 700); // 해시테이블 출력 console.log('map:', map); // 특정 키의 값 조회 console.log('banana의 값:', map.get('banana')); // 특정 키의 값 삭제 map.delete('cherry') console.log('cherry 삭제 후 객체:', map); // 객체의 크기 확인 console.log('객체의 크기:', map.size); // 특정 키의 존재 여부 확인 console.log(map.has('apple')); console.log(map.has('pineapple')); console.log(map.has(142));
JavaScript
복사

3. Set

Python

# 셋 선언 s1 = set() s2 = set() # 원소 추가 s1.add(10) s1.add(20) s1.add(30) s1.add(40) s2.add(10) s2.add(11) s2.add(22) s2.add(33) s2.add(44) # 셋 출력 print("s1:", s1) print("s2:", s2) # 원소 삭제 s1.remove(20) print("20 삭제 후 s1:", s1) # 원소의 존재 여부 확인 print(33 in s1) print(33 in s2) # 집합의 크기 확인 print(len(s1), len(s2)) # 합집합 연산 s3 = s1 | s2 print("s1과 s2의 합집합:", s3) # 교집합 연산 s3 = s1 & s2 print("s1과 s2의 교집합:", s3) # 차집합 연산 s3 = s1 - s2 print("s1과 s2의 차집합:", s3)
Python
복사

JavaScript

// 셋 선언 let s1 = new Set(); let s2 = new Set(); let s3 = new Set(); // 원소 추가 s1.add(10); s1.add(20); s1.add(30); s1.add(40); s2.add(10); s2.add(11); s2.add(22); s2.add(33); s2.add(44); // 셋 출력 console.log('s1:', s1); console.log('s2:', s2); // 원소 삭제 s1.delete(20); console.log('20 삭제 후 s1:', s1); // 원소의 존재 여부 확인 console.log(s1.has(33)); console.log(s2.has(33)); // 집합의 크기 확인 console.log(s1.size, s2.size); console.log('s1, s2의 값:', s1, s2); // 합집합 연산 s3 = new Set(); s1.forEach((item) => s3.add(item)); s2.forEach((item) => s3.add(item)); console.log('s1과 s2의 합집합:', s3); // 교집합 연산 console.log( 's1과 s2의 교집합:', [...s1].filter((item) => s2.has(item)) ); // 차집합 연산 console.log( 's1과 s2의 차집합:', [...s1].filter((x) => !s2.has(x)) ); console.log( 's2과 s1의 차집합:', [...s2].filter((x) => !s1.has(x)) );
JavaScript
복사

4. Stack

py : append(val)
js : push(val)
둘다 pop()

5. Queue

Python

from queue import PriorityQueue # 큐 선언 q = deque() # 맨 뒤에 원소 삽입 q.append(10) q.append(20) q.append(30) # 맨 앞의 원소 삭제 removed_element = q.popleft() print("삭제된 원소:", removed_element) print("삭제 후 큐:", q) # 맨 앞의 원소 확인 front_element = q[0] print("맨 앞의 원소:", front_element) print("현재 큐:", q) print() # 큐의 크기 확인 print("큐의 크기:", len(q)) print() # 특정 값의 존재 여부 확인 print(10 in q) print(20 in q) print() # 큐 순회 while q: print(q.popleft(), end=' ')
Python
복사

JavaScript

js는 shift(), pop(). 당연히 시간복잡도는 python보다 높다.

7. Heap

Python 최소힙

MaxHeap은 [-40,40]으로 넣어준다.
from queue import PriorityQueue # 우선순위 큐 선언 pq = PriorityQueue() # 원소 삽입 pq.put(40) pq.put(30) pq.put(10) pq.put(20) # 우선순위 큐 출력 print("우선순위 큐:", pq.queue) print(pq.queue) print() # 최상위 원소 삭제 (우선순위가 가장 높은 원소를 삭제) removed_element = pq.get() print("삭제된 원소:", removed_element) print("삭제 후 우선순위 큐:", pq.queue) # (삭제하지 않고) 최상위 원소 확인 top_element = pq.queue[0] print("최상위 원소:", top_element) print("현재 우선순위 큐:", pq.queue) # 우선순위 큐의 크기 확인 print("우선순위 큐의 크기:", len(pq.queue)) # 우선순위 큐가 비어 있는지 확인 print("우선순위 큐가 비어 있는지 확인:", pq.empty()) # 우선순위 큐 그냥 순회 for u in pq.queue: print(u, end=' ') # 우선순위 큐 순회 (우선순위 대로 순회) while pq.queue: # not pq.empty() print(pq.get(), end=' ')
Python
복사

JavaScript

자바스크립트는 클래스로 일일이 구현해야 됨.. 생략!