전체 글

Data Engineer를 거쳐 커머스 서비스를 개발하는 Backend Engineer로 커리어를 이어나가고 있습니다 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
Spark 스터디를 시작하면서 실습환경이 필요했는데 현재 회사에서 데이터브릭스를 사용하니까, Spark 개인 공부도 동일한 환경에서 공부를 하면 좋을 것 같아서 데이터브릭스로 결정했다. 그런데 클라우드 서비스인 만큼 과금을 주의해야 하므로 무료 버전 Databricks Community Edition 을 찾아보게 되었다. 시작 방법은 간단한데 데이터브릭스가 상당히 교묘하게 숨겨놔서 주의해야 한다 ! 나와 같은 사람들이 있을 것 같아서 공유한다. https://www.databricks.com/try-databricks Try Databricks - Unified Data Analytics Platform for Data Engineering Discover why businesses are turning..
·Algorithm (PS)
https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net 단순하게 벽을 부수는 횟수를 카운트 하다가 오답이 계속 나왔는데 이를 해결하기 위해서 새로 탐색하는 칸이 벽인 경우와 통로인 경우의 가중치를 다르게 주어야 한다. 1) 통로 : 벽을 부수지 않아도 통과하여 이동할 수 있으므로 가중치가 높다. 덱 (deque) 의 앞쪽으로 밀어넣는다 2) 벽 : 벽을 부수어야 하므로 가중치가 낮다. 덱 (deque) 의 뒤쪽으로 밀어넣는다 # ..
·Algorithm (PS)
이진수로 변환하고 -> 이진수를 표현하는 포화 이진 트리를 만들고 -> 포화 이진 트리를 탐색 하는 총 3가지의 로직을 구현해주면 되는 문제이다. 트리 란 비선형 자료구조들 중에서 자료 간 (= 노드) 계층 관계를 가진 자료구조이다. 포화 이진 트리란 모든 리프 노드의 레벨이 동일하고, 모든 레벨이 노드로 차있는 트리이다. 또한 각 노드들이 2개의 자식 노드들을 가지며, 홀수 개의 자식 노드를 가질 수 없다. 즉, 자식 노드가 0개이거나 2개이다. # 포화 이진 트리를 탐색 def check_tree(binary): root = len(binary) // 2 # mid if root == 0: # leaf node return True if binary[root] == '0': if '1' not in ..
·Data Engineering
Apache Airflow 환경 구성 MacOS 환경 Python 3.8.10 버전 단일 local server 위의 환경에서 Apache Airflow 를 설치한다. 우선, airflow 를 설치할 가상 환경을 생성한다. python3 -m venv ./airflow 가상환경을 activate 시켜줍니다. source airflow/bin/activate 다음으로 AIRFLOW_HOME 이라는 환경변수에 airflow 의 경로를 저장합니다. export AIRFLOW_HOME=~/airflow echo 명령어로 환경변수가 잘 설정되었는지 확인합니다. airflow version 에 대한 환경 변수를 설정한다. airflow 2.7 version 은 Python 3.8, 3.9, 3.10, 3.11 을 ..
·Algorithm (PS)
https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이것이 누적합이다 !! 를 보여주는 문제이다 ㅋㅋㅋ 단순하게 구현하면 시간초과가 나므로 누적합을 이용하여 degree 값을 미리 계산해두고 board에 더해주면 된다. def solution(board, skill): answer = 0 n = len(board) # col m = len(board[0]) # row dp = [[0] * (m+1) for _ in range(n+1)] for t,..
지난주에 시험보고 이제서야 쓰는 후기 AWS Data Analytics Specialty Certification 을 취득했다. Solutions Architect 를 취득하고 나서 머리가 가열되어 있는 상태(?)에서 조금만 더 공부하면 금방 딸 수 있다는 주위 사람들의 말을 듣고 SAA 시험 본 날에 DAS 시험을 신청했다. 솔루션즈 아키텍트 시험을 공부할 때와 동일하게 Exam Topics 로 공부했고 따로 유료 결제까지 하면서 dump 공부를 하진 않았다. 그래서 무료로 제공되는 약 70-80 문제 정도만 1회독 했다. 덤프를 외우지는 않았고 문제 풀면서 몰랐던 기능들을 정리해보았고, 서비스들을 어떻게 붙여서 써먹는지 이해하면서 공부하려고 노력했다. 공부하면서 Kinesis , EMR, Glue 등..
·Algorithm (PS)
https://www.acmicpc.net/problem/9466 9466번: 텀 프로젝트 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 www.acmicpc.net 와 ~~ 상당히 어려운 재귀인 것 같다 문제를 읽어봤을 때 얻을 수 있는 힌트는 간단하다. 프로젝트 팀이 형성되는 경우는 그래프 구조에서 cycle이 형성되는 상태이다. 따라서 cycle 을 형성하기 위하여 node 들이 이어져있는 관계를 파악해야 한다. 예를 들어서 문제 예시에서 팀을 이루는 (4, 7, 6) 을 살펴보자. 1. visited node 4를 아직 방문하지 않았으므로 4에 대해 방문처리..
·Algorithm (PS)
https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 1. 첫번째 시도 -> 메모리 초과 발생 256MB int형 == 4Byte 1KB == 1024Byte 1MB == 1024KB 256MB = 256 * 1024KB = 256 * 1024 * 1024B = int형 256 * 1024 * 1024 / 4Byte = 67108864개 [아이디어] 2차원 배열 dp 를 생성하고 여기에 i부터 j 까지..
minjiwoo
minji's engineering note