목록History/Python Coding (5)
KS_History
문제 1 & 내가 푼 코드- 시간 복잡도 O(n^2)- babbling에서 문자열을 받아와서 해당 문자열이 4가지 발음중 해당하는게 있는지 while문을 통해 확인하고 해당 문자열이 모두 4가지 발음에 해당하는 것으로만 이뤄졌다면 cnt 하도록함 문제 2 & 내가 푼 코드- 조건상 띄어쓰기 있는 상태로 수식이 들어오니 split하여 저장함- a + b나 a - b나 이런 식으로 들어오는 데 첫 값은 무조건 숫자니 return할 값에 더함- 그 후 홀수 번째에는 연산자 기호로 되어 있어 2 step 씩 넘어가며 계산해 return 값을 for문을 통해 구함 문제 3 & 내가 푼 코드 & 개선한 코드- 문제 2와 유사한 방식으로 수행함- 단, O/X를 판단하는데 중복된 로직이 있음- 따라서 아래와 같이 개..
title()- str.title() 형태로 사용하며 단어 단위로 처리함. 공백, 특수문자 뒤 문자를 새로운 단어로 인식함- 각 단어의 첫 글자 대문자 + 나머지 소문자로 처리함- 시간 복잡도 O(n), 공간 복잡도 O(n) capitalize()- str.capitalize() 형태로 사용하며, 첫 글자만 대문자로 변경하며 나머지는 소문자로 함- 시간 복잡도와 공간복잡도 모두 O(n) -> 공간의 경우 기존 문자열에 붙이는게 아니라 새 문자열 생성함 오른쪽은 왼쪽 코드를 개선한 것- chk를 new_word로 사용하며 True/False로 의미를 명확히함- answer += s[i]는 공간 복잡도 측면에서 새로운 문자열을 만드는 것을 append()를 사용해 공간 복잡도를 줄임 아래 문제에서 if문 ..
reverse()- list.reverse() 형태로 사용하며 리스트를 제자리에서 뒤집음, 반환값은 None- 리스트 전용으로 사용하는 함수이며 새 리스트를 생성하는 것은 아님- 시간 복잡도 O(n), 공간복잡도 O(1)- 원본 유지가 필요하면 reversed() 또는 a[::-1]의 방식을 사용할 수도 있음 enumerate()- enumerate(iterable, start=0)의 형태로 사용하며, 인덱스 관리- 시간 복잡도 O(n), 공간복잡도 O(1) count()- str.count(sub), list.count(x)의 형태로 사용하며 전체를 끝까지 탐색함.- 시간 복잡도 O(n), 공간복잡도 O(1)- 여러 값 카운트 하고 싶으면 collections.Counter이란 것도 있음 ㄴ from..
zip()- iterable의 같은 인덱스 원소를 묶어서 튜플로 변환- 가장 짧은 iterable 기준으로 동작- zip(iterable1, iterable2, ...)- 시간복잡도 O(n), 공간복잡도 O(1)- zip 객체는 1회성으로 z=zip(a,b)로 선언했다면 첫 list(z) 이후 list(z)는 빈 결과를 returna = [1, 2, 3]b=['a', 'b', 'c']list(zip(a,b)) #[(1,'a'),(2,'b'),(3,'c')] 아래 3개중 뭐가 효과적일까?- 시간복잡도는 O(n)으로 모두 같지만 solution1은 공간복잡도에서 O(n)으로 나머지 O(1)것에 비해 list를 생성함에 따라 비효율적임- solution3은 count()가 시간복잡도가 O(n)으로 4번 반복..
## set()set([1, 2, 2, 3]) # -> [1, 2, 3] set()은 중복 없는 요소들의 집합을 만드는 역할을 하며, 내부적으로는 hash table 기반으로 O(1)의 복잡도를 가짐 * hash table은 빠르게 데이터를 저장하고 찾아낼 수 있도록 만든 자료구조로, python에서는 dict과 set의 내부 구조가 hash table임. hash table은 저장한하려는 데이터를 hash function을 적용해 특정 정수 값으로 바꾸어 저장함 단, input 순서를 유지하지 않고 빠른 접근을 위해 메모리 사용량이 증가하는 단점이 있음 # & 연산자# & 연산자는 비트 연산자로 두 숫자의 각 비트를 비교해 둘다 1일 때만 1을 만드는 연산을 함# and와는 다른 역할을 해..