Python

·Python
1. Polars(폴라스)란?Rust로 만들어져 Python, JavaScript 등에서 사용할 수 있는 고성능 데이터프레임 라이브러리로, Pandas의 강력한 대안으로 떠오르며 특히 대용량 데이터 처리에서 뛰어난 속도를 자랑한다.또한 멀티코어 CPU를 활용한 병렬처리, 벡터화된 연산, 지연 평가(lazy evaluation) 및 효율적인 메모리 관리(zero-copy 데이터 공유)를 통해 대규모 데이터를 빠르고 효율적으로 분석하는 데 특화되어 있다. - Rust 기반 + 병렬 처리 기본 : 연산을 내부적으로 멀티스레드로 잘 돌림- Arrow 컬럼형 memory format : column 단위 연산(filter/join/etc.)이 유리- Lazy API : 여러 연산을 계획으로 묶어서 최적화한 뒤 한..
·Python
모델링 코드를 작성하거나 전처리를 진행할 때 가장 중요한 것은 코드의 "효율성"이다.이 때 가장 많이 활용하는 것이 바로 vectorization(벡터화)인데, 아직도 나를 포함하여 많은 학생 및 연구자들은 매우 비효율적인 무한 for 루프 코딩 스타일에서 벗어나지 못하고 있는 것이 현실이다...따라서 이번 글을 통해 개념을 확실히 다져보도록 하자! (혹시 오개념이 있다면 댓글로 편하게 지적해주세요) 1. 벡터화가 뭐 그렇게 중요한가..?> 네!!! 중요해요!!!!! 많이들 벡터화=시간복잡도 감소 라고 생각하지만, 대부분의 경우 알고리즘적으로 Big-O는 동일하다. 예를 들어 N개 원소에 y = x*2 + 1을 적용하면 for문과 벡터화 모두 O(N)이다. 그럼에도 불구하고 벡터화가 빠른 이유는,- ..
·Python
1. 그래프의 개념 - 인접 행렬 / 인접 리스트그래프: 노드(vertex)와 간선(edge)을 이용한 비선형 데이터 구조보통 그래프는 데이터 간의 관계를 표현하는 데 사용데이터를 노드로, 노드 간의 관계나 흐름을 간선으로 표현하며, 간선은 방향이 있을 수도 있고 없을 수도 있음만약 관계나 흐름에서 정도를 표현할 필요가 있다면 가중치(weight)라는 개념을 추가하여 표현그래프의 구현 방식에는 인접 행렬(adjacency matrix)과 인접 리스트(adjacency list)가 있음 인접 행렬은 배열을 활용하여 구현하는 경우가 많음이때 배열의 인덱스는 노드, 배열의 값은 노드의 가중치로 생각하고, 인덱스의 세로 방향을 출발 노드, 가로 방향을 도착 노드로 생각하면 자연스럽게 그래프를 표현할 수 있음예:..
·Python
** 이것이 취업을 위한 코딩테스트다 with 파이썬 서적을 바탕으로 작성한 글입니다. - 코딩테스트에서의 구현(Implementation) : 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정 어떤 문제를 풀든지 소스코드를 작성하는 과정은 필수이므로 구현 문제 유형은 모든 범위의 코딩테스트 문제 유형을 포함하는 개념이다. 흔히 구현 유형의 문제는 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제를 의미한다. [구현하기 어려운 문제 유형]- 알고리즘은 간단하지만 코드가 지나치게 길어지는 문제- 특정 소수점까지 출력해야하는 문제- 문자열이 입력으로 주어졌을 때 한 문자 단위로 끊어서 리스트에 넣어야하는 파싱 문제등 사소한 조건 설정이 많은 경우에 코드로 구현하기 까다롭다고 볼 수 있다. [구현 ..
·Python
먼저 기존에 무게 limit에 포커스를 두었던 방식으로 풀었다가 틀린 버전의 코드를 보면서 분석을 작성해보겠다. [1차 시도 (실패)]def solution(people, limit): boat = 0 people.sort() # 오름차순 : [50, 50, 70, 80] temp = limit for man in people: if limit >= man: # 태울 수 있는 경우 limit -= man else: # 태울 수 없어서 새 보트 필요 boat += 1 # 지금까지 태운 사람들 용 보트 +1 limit = temp # limit 다시 초기화 ..
·Python
[문제 분석]1. 부서별 신청 금액 배열 d를 오름차순 정렬2. d금액이 높은 부서부터 한 번씩 할당하고 다음 부서로 넘어간다.3. 과정 2를 budget의 한계가 될 때까지 수행한다. 문제에서 "최대한 많은 부서를 지원"하는 것이 목적이라고 명시했으므로 그리디 알고리즘이라고 볼 수 있다.다만 그동안의 기본 배낭 문제와 같은 문제들에서는 '가치' 혹은 여기서는 '지원 금액'이 많은 것을 목표로 했기에 입력 시퀀스를 내림차순 정렬하여 진행했었지만, 해당 문제에서는 금액에 포커스를 두는 것이 아닌 최대한 많은 부서를 지원하는 것이 목표이므로 오름차순 정렬을 진행하겠다. 또 하나의 포인트는 "물품을 구매할 때는 각 부서가 신청한 금액 만큼은 모두 지원"해야 한다는 부분인데, 이를 통해 0/1 배낭 문제와 같이..
여백 ::
'Python' 카테고리의 글 목록