📓기록/📚books

배열 크기를 지정하고 해당 크기만큼의 연속된 메모리 공간을 할당받는 작업을 수행하는 자료형 크기가 고정되어 있으며, 한번 생성한 배열은 크기를 변경하는 것이 불가. 크기를 지정하지 않고 자동으로 리사이징하는 배열인 동적 배열 = 파이썬에서는 리스트 파이썬은 정적 배열은 따로 제공하지 않으며 동적배열인 리스트만 제공 동적 배열의 원리 미리 초깃값을 작게 잡아 배열을 생성하고, 데이터가 추가되면서 꽉 채워지면, 늘려주고 모두 복사하는 식. 대개는 더블링이라 하여 2배씩 늘려줌 언어마다 늘려가는 비율은 상이하다. 파이썬의 재할당 비율(그로스 팩터, 성장 인자)은 초반에는 2배씩 늘려가지만 전체적으로는 약 1.125배로 다른 언어에 비해 다소 조금만 늘려가는 형태로 구현되어 있음 문제 풀어보기 두 수의 합 - ..
마음에 드는(??) 풀이만 정리해보자 유효한 펠린드롬 def isPalindrome(self, s:str)->bool: s=s.lower s=re.sub('[^a-z0-9]','',s) return s == s[::-1] 영숫자만 걸러내도록 정규식으로 처리 [::-1]을 사용하면 리스트를 뒤집을 수 있음 문자열 뒤집기 def reverseStr(self, s:List[str])->None: s.reverse() 또한 문자열 슬라이싱을 이용한 s[:]=s[::-1]도 가능함 로그 파일 재정렬 def reorderLogFiles(self, logs: List[str]) -> List[str]: letters, digits = [], [] for log in logs: if log.split()[1].isdi..
리스트 말 그래도 순서대로 저장하는 시퀀스이자 변경가능한 목록 입력 순서가 유지되며 내부적으로는 동적 배열로 구현 연속된 공간에 요소를 배치하는 배열의 장점과 다양한 타입을 연결해 배치하는 연결 리스트의 장점을 모두 취한 듯한 형태를 띠며, 실제로 리스트를 잘 사용하기만 해도 배열과 연결 리스트가 모두 필요 없을 정도로 강력하다. 주요 연산 연산 설명 시간복잡도 append("a") 리스트에 원소를 하나 삽입할 때 사용 O(1) sort(a) 오름차순 정렬 / 내림차순 정렬 O(NlogN) reverse() 리스트의 원소의 순서를 모두 뒤집어 놓음 O(N) insert(삽입할 위치 인덱스, 삽입할 값) 특정한 인덱스 위치에 원소를 삽입할 때 사용 O(N) count(a) 리스트에서 특정한 값을 가지는 데..
시간 복잡도 어떤 알고리즘을 수행하는 데 걸리는 시간을 설명하는 계산 복잡도 빅오 입력값이 무한대로 향할때 함수의 상한을 설명하는 수학적 표기 방법 점근적 실행시간을 표기할 때 가장 널리 쓰이는 수학적 표기법 O(1) 입력값이 아무리 커도 실행시간 일정 최고의 알고리즘 O(logn) 실행 시간은 입력값에 영향을 받는다 로그는 매우 큰 입력값에도 크게 영향을 받지 않는 편 대표적으로 이진 검색 O(n) 입력값만큼 실행시간에 영향을 받음, 선형 시간 알고리즘, 정렬되지 않은 리스트에서 최댓값 또는 최솟값을 찾는 경우 모든 입력값을 적어도 한번 이상은 살펴봐야 함 O(nlogn) 병합정렬을 비롯한 대부분 효율 좋은 정렬 알고리즘 입력값이 최선인 경우, 비교를 건너뛰어 O(n)이 될 수 있으며 팀소트가 이런 로..
쁜새
'📓기록/📚books' 카테고리의 글 목록