초간단 알고리즘 설명

[알고리즘 설명][Python] 집합과 맵(hash set & hash map)

lamp2357 2026. 6. 20. 00:34

이 게시글은 CS(컴퓨터공학) 프로그래밍 기초를 어느 정도 알고 있다고 가정하고 아주 간단하게 설명하는 게시글입니다.

혹시나 모르는 부분이 있으면 댓글로 질문해주세요.

 

원래라면 Hash Set에 대해 자세히 설명하고 Hash Map에 대해 자세히 설명하는 것이 맞으나 여기서는 정말 초간단하게 Python에서 집합(set)과 사전(dict) 자료 구조를 어떻게 활용하는지만 알려드립니다.

이미 해싱에 대해 초간단하게 알려줬으니 해시 테이블에 대해 간단하게 알고 있다고 생각하고 바로 본론으로 넘어갑니다.

 

1. Python에서 집합 자료 구조에 관한 초간단 문법 설명

import sys

input = sys.stdin.readline

# 집합은 중복 데이터를 허용하지 않은 자료 구조입니다.
# 혹은 S:set = set([1, 2, 3]) 혹은 S:set = set("hello") 등의 형태로도 선언할 수 있습니다.
S:set = set() # 빈 집합으로 생성할 수 있습니다.
print(S) # 결과 : set()

# 1개의 원소를 추가할려면 add()를 사용해주세요.
S.add(1)
print(S) # 결과 : {1}

# 여러 개의 원소를 추가할려면 update()를 사용해주세요.
S.update([1, 2, 3])
print(S) # 결과 : {1, 2, 3} <- 1이 중복되어 있으므로 {1, 2, 3, 1}로 나오지 않습니다.

# 원소 1개를 삭제할려면 remove() 혹은 discard()를 사용해주세요.
S.remove(1)
print(S) # 결과 : {2, 3}
S.discard(3)
print(S) # 결과 : {2}

# Python에서 집합 자료구조는 수정 함수가 따로 없습니다.
# 그러므로 아래와 같은 방식으로 수정을 진행합니다
S.discard(2); S.add(4)
print(S) # 결과 : {4} <- 2에서 4로 수정되었습니다.

# 마지막으로 clear()는 해당 집합 안에 있는 모든 데이터들을 다 초기화합니다.
S.clear()
print(S) # 결과 : set()

그 외 합집합(S1 | S2), 교집합(S1 & S2), 차집합(S1 - S2) 연산도 가능합니다.

 

2. Python에서 사전 자료 구조에 관한 초간단 문법 설명

import sys

input = sys.stdin.readline

# 사전은 빈 사전으로 선언할 수 있습니다.
D:dict = dict()
print(D) # 결과 : {}

# 혹은 미리 key:value 형태의 데이터들을 넣고 선언할 수도 있습니다.
my_baekjoon_profile:dict = {
    "id": "kjk9704",
    "tier": "Diamond II",
    "rating": 2542
}

# 원소들을 추가할려면 (사전명)[key] = value 형식으로 추가할 수 있습니다.
# 추가로 value에는 리스트 등으로도 가능합니다.
my_baekjoon_profile["language"] = ["Python"]
print(my_baekjoon_profile["language"]) # 결과 : ['Python']

# 만약 value가 리스트 혹은 튜플이면 아래와 같이 응용할 수 있습니다.
my_baekjoon_profile["language"].append("C++")
print(my_baekjoon_profile["language"]) # 결과 : ['Python', 'C++']

# 혹은 단순하게 value를 이렇게 저장할 수도 있습니다.
my_baekjoon_profile["blog_id"] = "isekaipudding"

# 사전에서 값을 변경할려면 (사전명)[key] = 변경하고자 하는 value로 수정하면 됩니다.
if "blog_id" in my_baekjoon_profile.keys() :
    my_baekjoon_profile["blog_id"] = "lamp2357"
print(my_baekjoon_profile["blog_id"]) # 결과 : lamp2357


# 만약 사전 안에서 쓸모 없는 데이터가 존재한다면 del 연산자로 제거할 수 있습니다.
print("\n원소 삭제 전 사전 상태")
for key, value in my_baekjoon_profile.items() :
    print(f"{key} : {value}")

if "blog_id" in my_baekjoon_profile.keys() :
    del my_baekjoon_profile["blog_id"]
    
print("\n원소 삭제 후 사전 상태")
for key, value in my_baekjoon_profile.items() :
    print(f"{key} : {value}")
    
"""
원소 삭제 전 사전 상태
id : kjk9704
tier : Diamond II
rating : 2542
language : ['Python', 'C++']
blog_id : lamp2357

원소 삭제 후 사전 상태
id : kjk9704
tier : Diamond II
rating : 2542
language : ['Python', 'C++']
"""

 

이렇게 해서 오늘도 아주 초간단하게 집합과 맵을 어떻게 사용하는지 알게 되었습니다.

정말 쉽죠?