Python/Algorithm 36

[프로그래머스] 달리기 경주 - Python

문제를 살펴보면 단순히 역전한 결과를 스왑(swap)하면 되지 않을까 라고 생각해서, list를 이용하여 아래와 같이 문제를 풀어보았다. # 시간초과 def solution(players, callings): for calls in callings: idx = players.index(calls) values = players.pop(idx) players.insert(idx-1, values) return players def solution(players, callings): for calls in callings: idx = players.index(calls) players[idx-1], players[idx] = players[idx], players[idx-1] return players Ru..

Python/Algorithm 2023.08.24

[Algorithm] sort()와 sorted()의 차이점

Contents 파이썬에서 리스트(List)를 정렬할 때 주로 사용하는 함수는 sort()와 sorted()가 있다. 두 개의 함수는 둘 다 정렬을 할 때 사용하지만 조금씩 사용하는 방법의 차이가 있다. 두 함수의 차이점에 대해서 알아보자. sorted sorted()의 경우 정렬할 때 쓰는 함수이며, 숫자 뿐만 아니라 문자까지도 정렬이 가능하다. 그러나, 문자를 정렬할 경우 리스트 구조로 반환이 되기 때문에 join 함수를 사용해서 다시 합쳐주어야 한다. a = [2, 5, 1, 9, 7] sorted(a) # [1, 2, 5, 7, 9] b = 'zbdaf' sorted(b) # ['a', 'b', 'd', 'f', 'z'] ''.join(sorted(b)) # 'abdfz' sort sort 함수는..

Python/Algorithm 2022.08.18

[Algorithm] List, Dictionary의 시간 복잡도

Contents 코딩 테스트를 하다보면 시간 복잡도를 고려하지 않아서 발생하는 시간 초과 문제에 직면할 때가 있다. 코딩 테스트에서는 리스트(List) 구조를 많이 사용하는데, 리스트에 사용할 수 있는 함수 혹은 주요 연산들의 시간 복잡도가 어느 정도인지 알아보자. List 연산 시간 복잡도 설명 $\text{len(a)}$ O(1) 전체 요소의 개수를 리턴한다. $\text{a[i]}$ O(1) index $i$의 요소를 가져온다. $\text{a[i:j]}$ O(k) index $i$부터 $j-1$까지의 길이만큼 $k$개 요소를 가져온다. 객체 $k$개에 대한 조회가 필요하기 때문에 O($k$) $\text{element in a}$ O(n) 요소가 존재하는지 확인하는 경우 순차 탐색을 해야하기 때문..

Python/Algorithm 2022.08.18

[Python] python에서 pickle file 다루기

python에서 데이터를 다룰 때 csv, xlsx과 같은 데이터는 많이 다루어 본 적 있을 것이다. 최근에는 yaml이나 pickle file을 많이 다루게 되는데, 왜 csv와 같은 확장자를 사용하지 않고 pickle을 사용하는 것일까? file을 csv나 xlsx 등과 같은 파일로 저장하는 경우 데이터의 고유한 정보를 담지 못한다. 예를 들어, python에서 list를 csv에 저장하게 되는 경우 다시 호출할 때 list 구조로 받아오는 것이 아니라 str으로 변환된 상태로 불러오게 된다. 그렇다면 ast와 같은 함수를 사용해서 str를 다시 list로 변환하는 작업을 수행해야 한다. pickle은 데이터의 자료 구조를 그대로 저장할 수 있기에 list를 pickle로 저장하면 list구조로 바로..

Python/Algorithm 2022.06.20

array와 asarray의 차이

numpy를 사용하는 코드를 참고하다 보면 array를 사용하는 경우와 asarray를 사용하는 경우를 볼 수 있다. 그렇다면 어떤 경우에 array를 쓰고, asarray를 쓰는 것일까? 구조적으로 보면 array와 asarray는 동일하다. 다만, array의 경우 copy=True가 기본값이지만, asarray의 경우 copy=False가 기본값이다. array를 다른 변수에 할당하고 원본을 변경할 경우 array의 copy본은 변경되지 않는다. 그러나 asarray의 경우에는 원본이 변경될 경우 asarray의 복사본까지 변경된다. a = np.ones([3, 4]) a_array = np.array(a) a_asarray = np.asarray(a) a[1] = 0 print(f'a_array ..

Python/Algorithm 2022.05.09

빅오, 빅오메가, 빅세타란?

Contents 백준이나 코드업 등 코딩 테스트에서 진행하는 알고리즘들에서 빅오(Big-O)라는 단어는 많이들 들어봤을 것이다. 그렇다면 빅오메가, 빅세타는 무엇일까? 먼저 빅오부터 알아보자. 빅-오(Big-O) 빅오는 코딩 테스트에서 시간복잡도를 다룰 때 주로 사용된다. 대개 최악의 경우를 의미하며, $\text{O(n)}, \text{O(n log(n)} $ 등 다양하게 존재한다. 예를 들어, 입력값 $n$에 대해서 $4n^2 + 3n + 4$ 번 만큼 계산하는 함수가 있다면, 최고차항만 고려하고 계수는 무시한다. 즉, 이때의 시간 복잡도는 $\text{O}(n^2)$이 되는 것이다. $\text{O}(1)$대부분 $\text{O}(\text{n})$을 기준으로 빠름을 나눈다. \[ \text{O}(..

Python/Algorithm 2022.04.28
반응형