[Algorithm] 알고리즘을 위한 Scala 기본 문법
·
Engineering/Algorithm
Scala란 함수형 객체지향 프로그래밍 언어로써 Spark를 사용할 때 빠른 성능을 이용할 수 있음으로 데이터 엔지니어링 역량에 필요한 언어입니다.필자는 Scala언어와 친해지기 위해서 Scala 언어를 활용하여 많은 알고리즘 문제를 풀어보았습니다. https://github.com/DeepFlame-JR/Algorithm_Solving GitHub - DeepFlame-JR/Algorithm_Solving: 알고리즘 문제 풀이알고리즘 문제 풀이 . Contribute to DeepFlame-JR/Algorithm_Solving development by creating an account on GitHub.github.com 아래에 알고리즘에 필요한 Scala 기본 문법에 대해서 정리해보겠습니다. 기본..
[Leetcode/Python] 96. Unique Binary Search Trees
·
Engineering/Algorithm
https://leetcode.com/problems/unique-binary-search-trees/ Unique Binary Search Trees - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 🤔 문제. n 개의 노드가 주어졌을 때, BST를 구성할 수 있는 경우의 수를 구하는 문제이다. 🤗 풀이. 처음에는 BST를 모두 구현을 해야하나...? 라는 생각이 들었다. (그러나 leetcode 특성상 그런 무식한 문제는 잘 없다.) 하지만 이내 이 문제는 ..
[HIVE] 하이브-Python 연동 (feat. sqlalchemy)
·
Engineering/BigData
프로젝트를 진행하면서 Python을 통해 Hive를 컨트롤하는 니즈가 발생했다. sqlalchemy를 활용하여, create select insert를 구현했다. sqlalchemy 란? Python에서 사용가능한 ORM(Object-relational maping)이다. 즉, 데이터베이스의 데이터를 Object필드와 매핑해준다는 것이다. 사실 DB의 스키마와 Object는 서로 기존부터 호환가능성을 두고 만들어진 것이 아니기에 불일치가 발생하는데,, ORM은 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 이러한 불일치를 해결한다. 이를 통해서 쿼리를 실행할 수도 있고, Python의 Dataframe과 데이터베이스간을 연결할 수 있다. Hive-Python 연동 1. select from sq..
[프로그래머스/Python] 경주로 건설
·
Engineering/Algorithm
https://programmers.co.kr/learn/courses/30/lessons/67259 코딩테스트 연습 - 경주로 건설 [[0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,0],[0,0,0,1,0,0,0,1],[0,0,1,0,0,0,1,0],[0,1,0,0,0,1,0,0],[1,0,0,0,0,0,0,0]] 3800 [[0,0,1,0],[0,0,0,0],[0,1,0,1],[1,0,0,0]] 2100 [[0,0,0,0,0,0],[0,1,1,1,1,0],[0,0,1,0,0,0],[1,0,0,1,0,1],[ programmers.co.kr 🤔 문제. (0,0)에 있는 자동차가 (n-1,n-1)로 이동하는 데 드는 최소 비용을..
[Python] logging 사용법과 클래스화
·
Engineering/Tools
Python에는 print라는 기능이 있다. 보통은 이 기능을 통해서 output을 확인한다. 그러나 print로는 output을 확인할 수 없는 경우가 있다. 필자는 airflow의 에러 로그가 print로는 확인되지 않아 logging 모듈을 활용했다. logging에서는 print보다 좀 더 다양한 기능을 제공하니, 한 번 알아보도록 하자! 😀 1. logging 모듈먼저 logging 모듈에 대해서 알아보자 1. log 출력 기준 log가 출력되는 기준을 설정합니다.출력 기준을 ERROR로 두게 된다면 그 아래 수준인 DEBUG/INFO/WARNING을 출력되지 않는다. 2. log 출력 형식asctime: 일자를 나타냅니다.levelname: 출력 수준을 나타냅니다.message: 출력 내용..
[Algorithm] 정렬 알고리즘 간단 정리와 Python 구현 (버블정렬, 선택정렬, 퀵정렬, 병합정렬, 힙정렬)
·
Engineering/Algorithm
데이터 베이스는 이론상 무한 개의 데이터를 다룰 수 있어야 하기 때문에, 수많은 데이터를 얼마나 빠르게 정렬하는 가는 중요한 문제이다. 🤔 그렇다면 왜 데이터는 정렬되어 있어야할까?간단히 말하자면 탐색을 위해서 이다. 정렬되어 있지 않은 데이터에서는 순차 탐색(O(N)) 밖에 사용할 수 없으나, 데이터가 정렬되어 있다면 이진 탐색(O(logN))이라는 알고리즘을 활용할 수 있다.삽입/삭제가 자주 일어나는 데이터의 경우 정렬에 더 많이 시간이 들어감으로 순차 탐색을 사용하는 경우도 있지만, 보통의 경우는 데이터를 조회하는 경우가 훨씬 많다. 그리고 조회에 필요한 것이 검색(탐색)이다. 1. 버블 정렬최댓값을 우선적으로 정렬하는 알고리즘이다.👉 동작 방식0부터 N-1까지 탐색하면서 인접한 칸과 비교하..