전체 글

愚公🏃移山⛰️
Data Engineering/실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트

[1주차] 데이터팀의 역할

요즘의 커리어란? 요즘의 커리어는 정글짐 - 예전에는 커리어가 사다리라는 생각이 있었지만, 요즘의 커리어는 정글짐이다. - 어디에서 시작하느냐는 별로 중요하지않다. up&down을 거치며, 나를 경험하는 것이 중요하다. - 젊을 때에 실패는 실패가 아니라는 생각을 가지며 나아가기 배움의 전형적인 패턴 - 처음 배울 때 가장 조심해야 할 것 > 잘하는 사람을 보고 기죽지 말 것. 모든 공부는 시간이 걸린다. 기죽는 것이 아닌, 나도 저 사람처럼 열심히 해야겠다라는 생각 갖기 - 배움의 정체기는 오게 되어있다. 여기서 어떻게 하느냐가 아주 중요하다. 1. 가장 중요한 것은 버티는 힘 → 이걸 즐겨야함 :) 2. 내가 뭘 모르는지 다시한번 생각해보자 → 내가 어디서 막혔는지 스스로 자문자답 해보기 3. 꾸준함..

BackEnd/BackEnd_Docker

[2주차] Docker Compose

[제 2 강] 로컬 환경에서 도커를 활용해보자! 이번 포스팅에서는 도커 compose에 대해 알아보겠습니다. Docker Compose란 무엇일까요? 도커 컴포즈(Docker Compose)는 여러 개의 도커 컨테이너를 하나의 단위로 정의하고 실행할 수 있게 해주는 도구입니다. 이를 통해 복잡한 애플리케이션을 여러 컨테이너로 구성하고 관리하는 작업을 간편하게 할 수 있습니다.간단히 말해, 도커 컴포즈는 애플리케이션을 구성하는 여러 컨테이너를 하나의 설정 파일에 정의하고, 그 설정 파일을 실행하여 모든 컨테이너를 동시에 실행하는 기능을 제공합니다. 이렇게 함으로써 여러 컨테이너 간의 연결, 설정, 환경 변수, 볼륨 마운트 등을 편리하게 관리할 수 있습니다. 아직 머리에 잘 안들어오시나요? 실습으로 한번 보..

Algorithm/자료구조

[추상 자료형] 파이썬 자료형 잘 고르기

리스트 파이썬 리스트는 굉장히 활용 범위가 큰 자료형입니다. 프로그래밍을 할 때 사실상 리스트만 사용하면 대부분의 경우 필요한 기능을 모두 사용할 수 있죠. 너무 사용 가능 범위가 넓다 보니까 어떤 다른 자료형을 사용할지 생각하지 않고 바로 리스트를 사용해 버리는 경우가 많은데요. 무조건 리스트를 사용해버리면 효율적으로 프로그래밍을 하기 힘듭니다. 이게 무슨 말인지 안 와닿을 수도 있는데요. 코드 예시를 하나 볼게요. 바로 리스트를 사용할 때 여러 개의 데이터(정확히는 0부터 999999까지의 정수)를 저장한 후, 특정 데이터를 탐색하는 코드를 써볼 건데요. 대부분의 상황과 비슷하게 동적 배열로 구현돼 있는 파이썬 리스트를 사용하면 원하는 코드를 쓸 수 있습니다. 바로 해볼게요. # 예시를 위해 사용할 ..

Algorithm/자료구조

[추상 자료형] 파이썬 자료형 주요 시간 복잡도 정리

이번 포스팅에서는 파이썬 자료형들에서 많이 사용하는 연산들의 시간 복잡도를 정리해보겠습니다. 이 시간 복잡도를 바탕으로 파이썬 자료형들을 사용할 때 얼마나 효율적으로 하는지를 떠올릴 수 있을 것 같습니다. 리스트 (동적 배열) 연산 예시 시간복잡도 접근 list_1[0], list_1[0] = 5 O(1) 추가 list_1.append(2) O(1) (분할 상환) 맨 뒤 삭제 list_1.pop() O(1) (분할 상환) 길이 확인 len(list_1) O(1) 삽입 list_1.insert(3, "성태호") O(n) 삭제 del list_1[0], list_1.pop(3) O(n) 탐색 "이재하" in list_1 O(n) deque (더블리 링크드 리스트) 연산 예시 시간 복잡도 맨 앞 삭제 dequ..

Algorithm/코딩테스트 스터디

출근하는 방법 I

출근하는방법I.py # 시간 복잡도 O(n) def staircase(n): # 여기에 코드를 작성하세요 a, b = 1, 1 for i in range(n): temp = a a = b b = temp + b return a # 테스트 코드 print(staircase(0)) print(staircase(6)) print(staircase(15)) print(staircase(25)) print(staircase(41)) 해결과정 계단의 높이가 4인 경우를 생각해보면 0 → 1 → 2 → 3 → 4 0 → 1 → 2 → 4 0 → 1 → 3 → 4 0 → 2 → 3 → 4 0 → 2 → 4 매번 오를 수 있는 계단의 수는 1 또는 2이다. 따라서 계단으로 가기 위해선 결국 3번째 계단 또는 2번째 계단..

Algorithm/자료구조

[해시 테이블] 해시 테이블 정리

1. 해시 테이블 - 해시 테이블을 이용하면 key-value 데이터를 저장할 수 있다. - 해시 테이블에는 데이터 간 순서 관계를 나타낼 수 없다. - 해시 함수는 특정 값을 넣었을때 원하는 범위의 자연수를 리턴하는 함수다. - Direct Access Table을 이용하면 key - value 데이터를 시간 효율적으로 저장하고 찾을 수 있다. - 해시 함수는 원하는 범위의 자연수를 빠르게(O(1)으로) 리턴하면 좋다. 2. 해시 테이블 충돌과 Chaining - 충돌은 해시 테이블에서 한 인덱스에 두 개의 key - value 쌍을 저장해야 되는 경우이다. - 충돌이 일어나면 해시 테이블을 제대로 사용하기 위해 Chaining이나 Open addressing 등을 이용해 충돌을 해결해야 한다. - C..

Algorithm/자료구조

[링크드 리스트] 링크드 리스트 정리

1. 링크드 리스트 - 배열과 같이 데이터를 순서대로 저장해주는 자료 구조다. - 각 노드가 다음 노드에 대한 레퍼런스만 저장하는지, 아니면 다음과 전 노드에 대한 레퍼런스를 모두 저장하는지에 따라 싱글리 링크드 리스트와 더블리 링크드 리스트로 구별할 수 있다. - 링크드 리스트 노드들은 메모리에 연속적이거나 순서대로 저장되지는 않는다. 메모리 이곳저곳 아무 데나 저장돼 있을 수 있다. - 싱글리 링크드 리스트는 처음에 크기를 정하지 않아도 그냥 새로운 노드를 만들어서 기존 노드들에 연결만 시켜주면 계속해서 새로운 데이터를 더해줄 수 있다. - 파이썬에서는 노드 클래스를 정의하고, 인스턴스들을 만들어서 연결하면 링크드 리스트를 구현할 수 있다. 2. 싱글리 링크드 리스트와 더블리 링크드 리스트 연산 - ..

Algorithm/자료구조

[해시 테이블] 파이썬 hash 함수

파이썬 hash 함수 파이썬 언어도 내부적으로 hash라는 함수를 제공합니다. 근데 이건 우리가 방금 배운 해시 함수랑 조금 다른데요. 파이썬 해시 함수는 파라미터로 받은 값을 그냥 아무 정수로만 바꿔주는 함수입니다. 저희가 배웠던 해시 함수와는 달리 특정 범위 안에 있는 정수가 아니라 아무 정수로 바꿔주죠. 정수형, 소수형, 문자열 타입에 hash 함수를 호출했을 때 나오는 결과를 살펴보겠습니다. # 정수 값 print(hash(12345)) # 12345 print(hash(12345)) # 12345 # 다른 정수 값 print(hash(12346)) # 12346 # 소수 값 print(hash(15.1234)) # 284541027336970255 print(hash(15.1234)) # 284..

Algorithm/자료구조

[해시 테이블] 해시 함수

이번 포스팅에서는 해시 함수에 대해서 조금 더 알아보고 해시 함수를 구현할 수 있는 가장 간단한 방법들에 대해서 살펴보겠습니다. 101호: 최지웅 204호: 강영훈 302호: 성태호 711호: 김현승 942호: 손동욱 먼저 주어진 key를 원하는 범위의 자연수로 바꿔서 리턴해주는 것 말고 다른 해시 함수의 조건들을 볼게요. 한 해시 테이블의 해시 함수는 결정론적이어야 된다. 똑같은 key를 넣었을 때는 항상 똑같은 결과가 나와야 한다는 건데요. 942를 해시 함수에 넣을 때 어쩔 때는 5이 나오고 어쩔 때는 10이 나오고 이러면 안 된다는 거죠. 942를 넣으면 항상 똑같은 결과가 나와야 됩니다. 결과 해시값이 치우치지 않고 고르게 나온다. 그러니까 해시 함수에 101, 204, 302, 711, 942..

BackEnd/BackEnd_Docker

[1주차] 도커의 개념 및 기본 사용법

Git 만큼 사랑 받는 개발 툴이 된 Dockerhttps://survey.stackoverflow.co/2022/ [제 1 강] 컨테이너 기술에 대해서 알아보고, Docker의 기본 개념과 사용법에 대해 알아보자Docker란 무엇일까? 가장 좋은 방법은 도커 공식 홈페이지를 훑어보는 것입니다. 홈페이지에는 이렇게 설명되어있습니다. • open platform 이다. • 어플리케이션을 인프라에서 분리해준다. • 신속하다. • 인프라를 어플리케이션을 관리하는 것 처럼 관리 할 수 있다. • 코드를 배포에 용의하다. 더 자세히 살펴보자면 • 컨테이너 기반 가상화 기술 중 하나 • 애플리케이션을 컨테이너라는 단위로 격리하여 실행하고 배포하는 기술 정도로 설명할 수 있을 것 같습니다. 하나하나 살펴보겠습니다. ..

달려라 국나뇽
swk99