더이상 구글링하기 귀찮다! py, js 왔다갔다하니 굉장히 헷갈림. 그래서 같이 정리해버림.
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
자바스크립트는 클래스로 일일이 구현해야 됨.. 생략!