안녕하세요 ㅎㅎ 오늘은 알고리즘 문제풀이 시 가장 많이 사용하는 리스트(list), 집합(set), 딕셔너리(dictionary) 메서드의 시간 복잡도를 정리해보려 합니다. 본격적인 시작전에 왜 여러 자료형들의 메서드에 대한 시간 복잡도를 알아야 하는지 짚고 넘어갑시다! 보통 알고리즘 문제 풀때 리스트로 큐를 구현하시는 분들이 많으실 텐데요. 여기 큐를 pop하는 반복문을 돌려서 풀어야 하는 문제가 있다고 가정해 봅시다. 만약 리스로 큐를 구현했다면 다음과 같이 나타낼 수 있는데요. 리스트의 경우 마지막 원소를 pop하는 연산의 시간 복잡도는 O(1)이지만, 그 외의 원소를 pop할 경우 원소를 한 칸씩 당기기 때문에 시간 복잡도는 O(N)이 되게 됩니다. 결국 반복문과 중첩되니 전체적인 시간 복잡도는 ..
알고리즘에는 시간복잡도라는 것이 있는데요. 코드를 다 작성하고 나서, 점근적 표기법인 빅오 표기법(Big-O notation)을 사용하여 대략적인 수식으로 시간복잡도를 나타낼 수 있습니다. 하지만, 만약 실제로 자신이 작성한 알고리즘이 얼마만큼의 시간이 걸리나 측정해보고 싶다면 어떻게 해야 할까요?? 방법은 정말 간단합니다. 여러 언어들이 시간 관련 프레임워크나 모듈을 제공 할텐데, 저는 파이썬 기준으로 설명드리겠습니다. 파이썬에는 time 모듈이 있는데요. 이 모듈의 time 메서드를 사용하시면 됩니다 ㅎㅎ (쉽죠??) 오늘 시간 측정을 해보기 위해 사용할 녀석은 정렬입니다. 정렬을 하는 방법에는 정말 다양한 방법이 존재 하는데요. 그래서 어떻게 알고리즘을 작성하느냐에 따라서 시간복잡도도 달라지게 됩니..
오늘은 딕셔너리에 대한 메소드를 정리해보려 합니다. 리스트, 튜플 딕셔너리로 변환 # 리스트 및 튜플 딕셔너리 변환 # 리스트 -> 딕셔너리 name_and_sex = [['LEE', 'M'], ['KIM', 'M'], ['RYU', 'F'], ['JEONG', 'F']] print(dict(name_and_sex)) #결과: {'LEE': 'M', 'KIM': 'M', 'RYU': 'F', 'JEONG': 'F'} # 튜플 -> 딕셔너리 name_and_sex = (('LEE', 'M'), ('KIM', 'M'), ('RYU', 'F'), ('JEONG', 'F')) print(dict(name_and_sex)) #결과: {'LEE': 'M', 'KIM': 'M', 'RYU': 'F', 'JEONG':..
오늘은 파이썬 집합의 함수 및 메소드에 대해 정리해보려 합니다! 집합은 중복을 허용하지 않기 때문에, 알고리즘 문제에서 리스트의 원소의 중복을 제거해야할 일이 있을때, 집합으로 타입을 변환해서 중복되는 원소를 제거한 후 다시 리스트로 타입변환을 해서 사용하는 경우가 많이 있습니다. 집합(Set)은 원소의 중복은 허용하지 않으면서 순서가 없는 자료형입니다. # 집합 test_set = set() # 공집합 선언시 test_set = {} 하면, 공집합이 아닌 딕셔너리를 생성하게 됩니다. test_set = {1,2,2,2,3,4,5} print(test_set) #결과: {1, 2, 3, 4, 5} -> 중복 허용 X 합집합 & 교집합 & 차집합 s1 = {1,2,3,4,5} s2 = {4,5,6,7,8}..
안녕하세요! 오늘은 문자열과 관련된 함수를 정리해 보려 합니다. 파이썬에서 문자열은 리스트와 마찬가지로 인덱싱 및 슬라이싱이 가능합니다. (파이썬은 다른 언어에 비해 문자열 처리가 상당히 편리한거 같아요.) # 인덱싱 & 슬라이싱 a = "Hello World!!" print(a[0], a[-1], a[7:11]) # 결과: H ! orld ● join() -문자열 삽입 # 문자열 삽입(join) join_str = ",".join('abcdef') print(join_str) # 결과: a,b,c,d,e,f ● strip() - 공백 지우기 # 왼쪽 공백 지우기(lstrip) test = " Hello World!! " print(test.lstrip()) # Hello World!! # 오른쪽 공백 ..
안녕하세요! 오늘은 파이썬 리스트와 관련된 함수를 정리해 보려 합니다. 알고리즘 문제 풀때 리스트를 조작하는 문제가 많이 나오기 때문에 이러한 함수들을 잘 숙지하고 계신다면 좋을 것 같습니다 :) 파이썬 리스트 자료형은 신기하게도(?) 다양한 자료형의 데이터를 원소로 가질 수 있습니다. 또 덧셈 및 곱셈등의 연산을 통해 쉽게 리스트를 조작 할 수 있습니다. len(list) - 리스트의 길이 반환 max(list) & min(list) - 리스트의 최대 & 최소 요소 반환 슬라이싱 - 리스트 원소들의 범위 지정 + 추가로 반복문과 리스트에서 자주 사용 되는 range() 함수 입니다. 다음과 같이 range()함수 외에 반복문을 통해서도 리스트를 만들 수 있습니다. enumerate함수는 다음과 같이 튜..