전체 글 364

5. Matric

Matric 기능을 이용해 꾸미기 패널의 에딧으로 들어가 왼쪽 상단의 [Matric]을 선택한다. 이를 누르고 저장하게되면 추후에 패널의 크기를 조정할때 내용이 씹히거나 먹히지 않고 자동적으로 조정된다. Agg-metric은 [aggregation based]누르고 metric을 만들면 이렇게 여래개의 표현이 가능하다. 다시 돌아와서 All types에서 [Aggregation based] ⇒ [TSBV]를 눌러 다시하나 만든다 오른쪽 [Options]에서 [Ranges] 범위를 설정해줄 수 있다. 이처럼 범위별로 색깔을 다르게 할 수도 있다. Goal 기능 이용 [all types] ⇒ [aggregation based] ⇒ [goal] 선택 이렇게 설정하면 왼쪽처럼 이상하게 뜬다. 해결해보자 월별로 ..

4. DashBoard, TSVB

대쉬보드 구성 및 마크다운 왼쪽 메뉴에서 대쉬보드 클릭 후 create 대쉬보드를 클릭하면 이와같은 화면이나온다. 동그라미된 [Add from library]를 누르고 전에 만들었던 2개를 가져온다. 클릭으로 바로 가져올 수 있다. 불러왔다. 각각의 패널은 사이즈조절 및 이동이 가능하다. All types 하단의 [TSVB]의 기능을 클릭한다. 이와같은 창이 뜨게된다. 상단의 각각의 기능은 [Time Series] = 실시간 데이터를 나타내기에 최적화된 툴 [Markdown]을 눌러 왼쪽 하단의 [Panel options]을 클릭한다. 미리 만들어놓은 Index pattern을 선택 후에 Data로 이동한다 이와같이 선택을 해주고 Sum과 필드인 amount를 선택한다. 글자를 왼쪽 하단에 직접 써도 되..

3. Table

aggregation based 등을 이용한 행,열 data table 시각화 [Visualize Libaray]에서 [Create Visualization]을 눌러 Aggregation based을 누른다. 여기에는 다양한 시각화 툴이 있다. 여기서는 Data table이용할 것이므로 인덱스 패턴을 선택해야 한다. [Split rows]를 설정해준다. 여기서 Sub aggregation은 Trems으로 설정해준다. Custom은 타입으로 설정한다. 이부분빼고 모두 terms으로 진행한다. Field는 _형식의 컬럼명이 있는데 _는 키바나에서 자체적으로 만든는 것이므로 선택안하게 조심하자. lens 경우 자동으로 업데이트가 됐는데 여기서는 Update 눌러줘야 한다. 그 외에 Split rows들은 Da..

2. Lens

Lens 대용량 데이터의 경우 많이 느리므로 상대적으로 작은 데이터를 볼때 괜찮다. 왼쪽에 [Available fields]에서 date, amount를 드래그해서 오른쪽으로 가져다 놓는다. 그 이후 date를 눌러서 원하는 스타일로 커스텀할 수 있다. [Customize time interval]을 체크하고 1 month로 설정한다. 보기좋게 display name은 날짜로 바꿔준다. 여기서 Count of records를 제거하면 하단에 각각의 건수를 지울 수 있다. [Bar vertical stacked]를 클릭해 원하는 형태를 선택해서 시각화 할 수 있다. [Bar horizontal]을 통해 가로로된 막대그래프를 시각화해서 월별로 볼 수 있다. 오른쪽에서 [Horizontal axis]클릭 후 ..

정렬된 배열에서 특정 수의 개수 구하기

1. 문제 설명 2. 문제 조건 3. 문제 해결 아이디어 시간 복잡도를 O(logN)으로 동작하는 알고리즘을 요구하므로 선형 탐색이 아닌 이진 탐색을 수행 데이터가 정렬되어 있기 때문에 특정 값이 등장하는 첫 번째 위치와 마지막 위치를 찾아 위치 차이를 계산하여 답을 도출 4. 소스 코드 from bisect import bisect_left, bisect_right # 값이 [left_value, right_balue]인 데이터의 개수를 반환하는 함수 def count_by_range(a, left_value, right_value): right_index = bisect_right(a, right_value) left_index = bisect_left(a, left_value) return righ..

떡볶이 떡 만들기

1. 문제 설명 2. 문제 조건 3. 문제 해결 아이디어 적절한 높이를 찾을 때까지 이진 탐색을 수행하여 높이 H를 반복해서 조정 현재 이 높이로 자르면 조건을 만족할 수 있는가?를 확인한 후 탐색 범위를 좁히기 절단기의 높이는 0~10억까지 정수 중 하나 큰 범위는 대부분 이진 탐색 과정을 반복하면서 얻을 수 있는 떡의 길이 합이 나올 동안 중간점의 값을 기록한다. [Step 1] 시작점: 0, 끝점: 19, 중간점: 9(자르고자 하는 높이) 이때 필요한 떡의 크기: M = 6이므로, 결과 저장 탐색 범위는 0~19이다 중간점은 나누면 9가 될 것이다. 잘린 떡의 길이는 모두 25가 나온다. 중간점의 9를 기록하고 중간점을 오른쪽으로 높이면서 또 확인한다. [Step 2] 시작점: 10, 끝점: 19,..

값이 특정 범위에 속하는 데이터 개수 구하기

1. 새로 알게된 것 (파이썬 이진 탐색 라이브러리) bisect_left(a, x) 정렬된 순서를 유지하면서 배열 a에 x를 삽입할 가장 왼쪽 인덱스를 반환 bisect_right(a, x) 정렬된 순서를 유지하면서 배열 a에 x를 삽입할 가장 오른쪽 인덱스를 반환 a라는 배열에 4가 있는 인덱스의 바로 왼쪽 a라는 배열에 4가 있는 인덱스의 바로 오른쪽 from bisect import bisect_left, bisect_right a = [1,2,4,4,8] x = 4 print(bisect_left(a,x)) print(bisect_right(a,x)) #출력 결과 2 4 2. 값이 특정 범위에 속하는 데이터 개수 구하기 from bisect import bisect_left, bisect_rig..

이진 탐색 알고리즘 이론

1. 순차 탐색 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법 2. 이진 탐색 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법 시작점, 끝점, 중간점을 이용하여 탐색 범위를 설정 3. 이진 탐색 동장 예시 이미 정렬된 10개의 데이터 중에서 값이 4인 원소를 찾는 예시 [Step 1] 인덱스 시작점 : 0, 끝점 : 9, 중간점 : 4 중간지점은 인덱스 4.5인데 소수점 이하는 제거하므로 4즉, 인덱스 4번째를 중간점으로 선택 중간점과 찾고자하는 값(4)를 비교한다. 오른쪽은 필요가 없을 것이다. [Step 2] 시작점: 0, 끝점: 3, 중간점: 1 끝점은 중간점 바로 앞으로 바뀌고 다시 시작한다. 중간점이 찾고자 하는쪽의 오른쪽에 있..

두 배열의 원소 교체

1. 문제 설명 2. 문제 조건 3. 문제 해결 아이디어 매번 배열 A에서 가장 작은 원소를 골라서, 배열 B에서 가장 큰 원소와 교체 A에 대하여 오름차순 정렬, B에 대하여 내림차순 정렬 각 배열의 첫 번째 인덱스부터 차례로 확인하면서 A원소가 B의 원소보다 작을 때만 교채 최악의 경우 O(NlogN)을 이용 4. 답안 N, K = map(int, input().split()) #N, K 동시에 입력 count = K result = 0 A_array = list(map(int, input().split())) B_array = list(map(int, input().split())) A_array.sort() B_array.sort(reverse = True) for i in range(N): fo..

정렬 알고리즘 종류와 특징 비교하기

선택 정렬 알고리즘 특징 키 값을 찾아서 비교한다. 구현이 매우 쉽다. 삽입 정렬 알고리즘 특징 데이터가 거의 정렬되어 있을 때 가장 빠르다. 자신의 위치를 찾아서 계속해서 삽입한다. 퀵 정렬 알고리즘 특징 Pivot 값을 정한 후 계속해서 정렬한다. 충분히 빠른 속도를 가진다. 계수 정렬 알고리즘 특징 데이터의 크기가 한정되어 있는 경우에만 사용한다. 그만큼의 배열, 리스트가 필요하다. 매우 빠른 속도를 가지고 있다.