Others/Coding 9

[GCP] 초보개발자를 위한 VM 생성 / MobaXterm을 사용한 SSH 접속 / Python 개발환경 설정 가이드

초보 개발자 그건 바로 나🦊🦊🦊 나중에 VM 뚝딱 생성하려고 만들어둔 가이드 문서입니다 GCP VM 생성하기 1. 방화벽 규칙 설정하기 내 컴퓨터에서만 안전하게 VM을 사용하기 위해 방화벽 규칙을 설정한다 (http / https 트래픽을 모두 허용하면 네트워크 해킹 당해서 VM 악용될 수 있음 주의) VPC 네트워크 > 방화벽 > 방화벽 규칙 만들기 클릭 Name : 방화벽 규칙 이름 (ex. my-firewall) Targets(대상 태그) : 원하는 태그 이름 (ex. littlefox) Source filter (소스 필터) : IPv4 ranges Source IPv4 ranges : 명령 프롬프트 > ipconfig 입력 > IPv4 주소 뒤에 있는 xx.xxx.x.xx 번호 입력 Protoc..

Others/Coding 2023.08.18

[TopCoder 알고리즘] 전체탐색 - 암호

Problem : Cryptography TopCoder Security Agency (TSA)는 새로운 암호화 시스템을 개발했다. 이 시스템은 암호화를 위해 숫자 리스트를 입력받는다. 당신은 TSA의 비밀 정보 수사원이다. 암호화 과정에서 중요한 부분을 구현하는 것이 당신의 임무이다. 당신은 입력 리스트에서 1개의 값을 선택하고 값을 1 증가시킨다. 이때 리스트 내부의 모든 숫자 곱이 가장 커져야 한다. int[] numbers 형태로 숫자 배열이 주어질 때 곱의 최댓값을 리턴하라. 리턴값이 2^62를 넘는 문제는 나오지 않는다. 제약 조건 : capacities : 2-50개의 요소라 있는 배열이며 각 요소의 값은 1-1000이다 리턴값 2^62를 넘지 않는다 예시 : numbers = {1 , 2 ..

Others/Coding 2022.04.03

[TopCoder 알고리즘] 전체탐색 - 즐거운 파티

시뮬레이션 문제에서 주어진 과정을 거쳐 나온 결과가 무엇인지 묻는다면, 전체 탐색 유형은 과정을 알려주지 않고 "가장 좋은 결과는 무엇인지" 등을 물어볼 수 있다. 선택 사항이 몇 개가 있고 어떤 것을 선택해야 할지 모르는 상황에서 전체 탐색은 모든 경우를 테스트하는 전략이다. Problem : Interesting Party 화이트씨는 다재다능한 사람이다. 그래서 그는 친구가 많다. 하지만 불행히도 그의 친구들은 누구도 다재다능하지 않다. 그들은 각자 두 개의 관심사만을 가지고 있고, 그 이외의 주제에 대해서는 대화하고 싶어 하지 않는다. 따라서 화이트 씨는 파티를 주최할 때, 모두에게 파티가 흥미롭기 위해서는 누구를 초대해야 하는지 고민이다. 화이트 씨는 파티 경험이 많지는 않지만, 친구들 모두가 공..

Others/Coding 2022.04.01

[TopCoder 알고리즘] 시뮬레이션 - 키위주스

초기 상태와 어떤 작업을 수행할지를 제공하고, 그에 따라 최종 결과가 어떻게 될지 답하는 문제 유형 Problem : KiwiJuiceEasy 타로는 키위 주스를 준비했다. 타로는 0부터 N-1이라 이름을 붙인 N개의 병에 키위 주스를 넣었다. 이때 i번째 병의 용량은 capacities[i] 리터이며 타로가 i번째 병에 넣은 키위 주스의 양을 bottles[i] 리터라고 한다. 타로는 병에 키위주스를 재분배하려고 하며, 0부터 M-1까지 M회 조작한다. i번째의 조작은 타로가 병 fromId[i]부터 병 toId[i]에 키위주스를 넣는 것을 의미한다. 병 fromId[i]가 비어있거나 병 toId[i]가 꽉 차 있는 순간, 타로는 더 이상 키위주스를 넣지 않는다. N개의 요소를 가진 정수 배열 int[..

Others/Coding 2022.03.31

[Python] IR 검색 알고리즘 - BM25 / 엘라스틱서치 랭킹 알고리즘 / 파이썬 rank_bm25 모듈로 문서 검색 구현하기

키워드 기반의 랭킹 알고리즘 - BM25 BM25(a.k.a Okapi BM25)는 주어진 쿼리에 대해 문서와의 연관성을 평가하는 랭킹 함수로 사용되는 알고리즘으로, TF-IDF 계열의 검색 알고리즘 중 SOTA 인 것으로 알려져 있다. IR 서비스를 제공하는 대표적인 기업인 엘라스틱서치에서도 ElasticSearch 5.0서부터 기본(default) 유사도 알고리즘으로 BM25 알고리즘을 채택하였다. BM25 step by step 살펴보기 BM25는 Bag-of-words 개념을 사용하여 쿼리에 있는 용어가 각각의 문서에 얼마나 자주 등장하는지를 평가한다. 키워드 q1,..., q_n을 포함하는 쿼리 Q가 주어질 때 문서 D에 대한 BM25 점수는 다음과 같이 구한다. 식은 복잡해 보이지만, 요소 하..

Others/Coding 2020.03.01

라빈 카프 알고리즘(Rabin-Karp Algorithm) : 해싱을 통해 효율적으로 문자열 검색하기 / 해싱 / 해시함수

해싱 (Hashing) 키 값에 직접적인 산술 연산을 적용하여 항목이 저장되어 있는 테이블의 주소를 계산해 항목에 접근하는 방법. 충분히 큰 공간을 할당한 다음 해시 함수를 이용해 고유 색인을 생성하고, 색인에 맞는 위치에 데이터를 저장하는 것이 특징이다. 해시함수 : 임의의 길이를 갖는 임의의 데이터를 고정된 길이의 데이터로 매핑하는 함수 해시 테이블 : 키 값의 연산에 의해 직접 접근이 가능한 구조 해싱 : 해시 테이블을 이용해 탐색하는 것 해싱에서는 자료를 저장하는 데 배열을 사용한다. 배열은 항목이 저장된 주소를 알고 있을 경우 빠르게 자료를 삽입하고 꺼내올 수 있기 때문이다. 배열에서의 삽입/ 접근에 대한 시간 복잡도는 O(1) 이다. 따라서 데이터를 색인으로 매핑하는 함수만 정의한다면, 이론적..

Others/Coding 2020.03.01

[Python] 힙 자료구조 / 힙큐(heapq) / 파이썬에서 heapq 모듈 사용하기

힙은 특정한 규칙을 가지는 트리로, 최댓값과 최솟값을 찾는 연산을 빠르게 하기 위해 고안된 완전이진트리를 기본으로 한다. 힙 property : A가 B의 부모노드이면 A의 키값과 B의 키값 사이에는 대소 관계가 성립한다 최소 힙: 부모 노드의 키값이 자식 노드의 키값보다 항상 작은 힙 최대 힙: 부모 노드의 키값이 자식 노드의 키값보다 항상 큰 힙 이러한 속성으로 인해 힙에서는 가장 낮은(혹은 높은) 우선순위를 가지는 노드가 항상 루트에 오게 되고 이를 이용해 우선순위 큐와 같은 추상적 자료형을 구현할 수 있다. 이때 키값의 대소 관계는 부모/자식 간에만 성립하고, 형제노드 사이에는 대소 관계가 정해지지 않는다. 파이썬 힙 자료구조 파이썬 heapq 모듈은 heapq (priority queue) 알고..

Others/Coding 2020.02.23