2021/03 5

leetcode 763(구현), 1551(구현), 1305(트리), 1035(dp, lcs)

763 leetcode.com/problems/partition-labels/ 글자들이 한묶음씩 묶여있다. 이걸 최대한 나눠줘야 한다. 모든 단어의 가장 오른쪽 인덱스를 저장해놓고, 하나씩 반복하면서 '여태까지 나온 글자중에 가장 오른쪽에 있는 글자' 가 현재 위치이면 이 인덱스가 하나의 파티션의 끝이 되므로, 이것과 현재 인덱스가 같으면 인덱스를 계산해서 넣어준다. class Solution(object): def partitionLabels(self, S): ret = [0] index_dict = {c:i for i,c in enumerate(S)} max_last_index = 0 for i, c in enumerate(S): max_last_index = max(max_last_index, in..

parquet vs orc vs avro (big data file format )

1. www.datanami.com/2018/05/16/big-data-file-formats-demystified/ 공통점. 3개 타입은 전부 하둡에 저장하는데에 최적화되어있다. orc, parquet, avro 3개 전부 기계가 읽을수 있는 바이너리 포맷이다. orc, parquet, avro는 여러개의 디스크로 나뉘어질수 있으며 이 특징으로 인해 확장성과 동시처리가 가능해진다. 반면에 json이나 xml은 나뉘어서 저장이 불가능하며, 그로 인해 확장성과 동시성에 제한이 있다. 3개 포맷 모두 스키마를 파일이 가지고 있어서 다른곳으로 옮겨서 처리하는게 가능하다. 차이점. orc, avro, parquet의 가장 큰 차이점은 데이터를 어떻게 저장하느냐이다. parquet과 orc는 데이터를 column..

data engineering 2021.03.25

leetcode 605(구현), 1302(트리), 56,57(구현, 그리디같은거), 654(트리, 재귀)

605 leetcode.com/problems/can-place-flowers/ 꽃을 심는데 반드시 꽃 사이사이에 한칸씩 공간이 있어야 한다. class Solution(object): def canPlaceFlowers(self, fb, n): i = 0 while i 0: if i == len(fb) -1 and fb[i-1] == 0 and fb[i] == 0: fb[i] = 1 n -= 1 break elif i < len(fb) -1 and fb[i] == 0 and fb[i+1] == 0: fb[i] = 1 n -= 1 i += 2 elif i < len(fb) -1 and fb[i] == 1 and fb[i+1] == 0: i += 2 else: i += 1 ..

leetcode 1769(prefix sum같은거), 1614, 1290(구현), 1315(트리)

1769 leetcode.com/problems/minimum-number-of-operations-to-move-all-balls-to-each-box/ boxes배열이 있고, 1이면 공이 있고 0이면 공이 없다. i번째 배열에 모든 공을 모으려면 몇번 움직여야 하는지 합을 리턴하면 된다. 근데 당연히 무식하게 O(n^2)으로 하는게 의도가 아니라 O(n)으로 가능하다. 좋은 해설 : leetcode.com/problems/minimum-number-of-operations-to-move-all-balls-to-each-box/discuss/1075895/Easy-Python-beats-100-time-and-space class Solution(object): def minOperations(self..

elastic kibana basic visualization

kibana에 대해서는 qkqhxla1.tistory.com/1024 에서 정리를 가볍게 했었는데... 저 글에서도 적었지만 겨우 한 글에 너무 전반적인 내용을 다 적으려고 하다가 이도 저도 아닌 글이 되버렸다. 이번에는 실제로 사용하는 데이터를 이용하여 가장 헷갈리는 부분인 키바나 gui를 이용해 시각화하는 부분만 다룰 예정이다.키바나 gui를 사용해서도 만들 수 있는 그래프가 상당히 많은데, 그중에 많이 사용하는, 간단한 패턴만 몇개 적는다. 다른 복잡한 작업들도 할수 있을건데 내 입장에서는 대충 아래 패턴정도로 키바나 파악이 끝나면 대충 이리저리 만져서 만들어낼 수 있다고 생각한다. '이렇게 넣으면 이렇게 그려지겠지' 감을 잡는게 가장 어려웠다. 1. 실시간 데이터의 카운트를 그래프로 모니터링하는 ..

data engineering 2021.03.03